开发基于MFC的应用程序
本篇将介绍如何开发基于MFC的应用程序。
具体步骤如下:
一:启用VS2019编辑器。
二:点击文件—>新建—>项目
三:MFC应用—>下一步
四:添加项目名称—>创建
五:选择基于对话框—>下一步—>下一步—>下一步—>完成
六:按Ctrl+F5运行
运行结果如图:
使用MFC应用向导,没有编写一句代码,就创建了一个对话框。这与windows编程实现一个对话框程序,简单了许多,这就是MFC的优势。
在上面的程序中,并没有发现程序的入口WinMain。这使我们产生了许多疑问。下面将剖析程序执行过程来找出答案。
在编译应用程序的时候,首先会构造工程的全局对象,即先创建全局对象。在程序MFCApp.cpp文件中,找到CWinApp::InitInstance();这个函数前按F9添加断点,以调试状态运行该程序,在调用堆栈中双击MFCApp.exe!AfxWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) 行 37 C++这一行,就可以找到winmain函数了。如图:
_tWinMain函数与WinMain函数有什么关系呢?将光标定位在_tWinMain处,按F12查看其定义,发现_tWinMain其实是一个宏,等价于WinMain函数。如图:
在_tWinMain函数中,调用了AfxWinMain函数,而AfxWinMain函数又调用了AfxWinInit函数,然后右调用了应用程序的InitApplication函数及InitInstance函数。
应用程序CWinApp的父类是CWinThread。在CWinThread类中定义了虚函数InitInstance,依据动态绑定的原则,pThread->InitInstance()语句实际上调用的是应用程序InitInstance函数。
本例中InitInstance函数代码是由MFC应用程序自动生成代码如下图。
在应用程序的InitInstance函数中,对话框dlg调用了DoModal函数,该函数用于创建了一个模态对话框。
## 下一篇C++类和对象的概述(上)