MFC运行流程图

C语言vs.MFC1

根据 《孙鑫vc++讲座》视频教程的讲解,从执行原理上说,MFC的程序和常规C++语言的程序是完全一致的。 C++中的main函数相当于MFC中的WinMain函数。

#include <iostream.h>
int x = 1;
main()
{
cout<<x<<endl;
}

如上述代码, 像x这样的全局变量在进入main函数前已经创建,并初始化。

新建一个MFC项目,命名为Test。

CTestApp::CTestApp()
{
	// 支持重新启动管理器
	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

	// TODO: 在此处添加构造代码,
	// 将所有重要的初始化放置在 InitInstance 中
}

// 唯一的一个 CTestApp 对象
CTestApp theApp;

在CTestApp.cpp中定义全局变量theApp,它在WinMain()函数之前被定义。

MFC执行顺序

以Test项目为例,MFC的执行顺序如图1所示。

CTestApp中的全局变量定义
调用TestApp构造函数
(创建一个类,它首先会调用自己的构造函数)
进入Winmain函数(_tWinMain为宏,值为WinMain)
完成初始化工作:包括窗口类注册、窗口产生、显示和更新
图1 MFC执行顺序

需要说明的是, 对于MFC程序,MainFrame,View,Dialog等都是窗口。这些窗口的注册与创建、显示等要反复调用多次,一次只能调用一个窗口 ,如图2所示。

设计窗口
注册窗口
创建窗口
显示及更新窗口
消息循环
图2 窗口执行顺序

如何编写MFC程序2

与普通的c / c ++应用程序不同,在该应用程序中,入口点是main,您可以完全控制执行流程。MFC应用程序是事件驱动的。您编写的代码是基于由于用户与应用程序交互(例如,单击按钮,在文本框中输入文本等)而发生的事件而执行的。当没有交互时,应用程序将处于空闲状态。

(1)最好的位置是OnInitDialog来放置您的初始化代码。您可以在OnInitDialog中初始化所有成员变量。(请记住winMain是Windows应用程序的入口点。但是在MFC中,它被深埋在模板代码中。)

(2)添加消息处理程序以处理用户操作,以便稍后执行您的核心程序。例如:如果对话框上有一个按钮,则需要为该按钮添加消息处理程序函数,当用户单击该按钮时,该函数将被调用。使用类向导(https://msdn.microsoft.com/zh-cn/library/ee748520.aspx)可以轻松完成此操作。


  1. https://blog.csdn.net/husongchao/article/details/5063786 ↩︎

  2. https://stackoverflow.com/questions/44798930/what-is-the-entry-point-of-this-basic-mfc-dialogue-box-application ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值