VS2013/MFC基于对话框编程:[3]程序执行流程

时间:2024-10-17 03:12:38

创建好一个MFC项目以后,如果是第一次创建,或者虽然创建了很多项目,却并没有认真分析自动生成的程序代码,那么就很有必要知道项目的程序框架如何,项目是从哪开始执行,到哪终止程序,如何响应消息,如何刷新界面等等问题。

VS2013/MFC基于对话框编程:[3]程序执行流程

工具/原料

visual studio 2013

MFC执行流程

1、每创建一个项目,一般会包含3个类,“关于”对话框类、主对话框类以及用于初始化项目的App类,假如项目名称为Demo,那么这三个类分别为CAboutDlg、CDemoDlg、CDemoApp。

VS2013/MFC基于对话框编程:[3]程序执行流程

2、项目生成后,都会生成一个属于CDemoApp类的theApp对象,对本应用程序实例化,这个在CDemoApp.cpp文件中定义,创建时调用构造函数CDemoApp::CDemoApp();这就是程序创建的第一步。

VS2013/MFC基于对话框编程:[3]程序执行流程

3、接下来程序会调用winmain函数,这个在项目文件中找不到,但可以在VS2013的安装路径下找到,其函数声明为:int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,_In_ LPTSTR lpCmdLine, int nCmdShow);

VS2013/MFC基于对话框编程:[3]程序执行流程
VS2013/MFC基于对话框编程:[3]程序执行流程

4、调用完winmain后,就通过InitInstance()函数初始化窗口,包括注册、创建和显示对话框,InitInstan艘早祓胂ce函数是CDemoApp类中除构造函数以外唯一的成员函数。一般不需要修改这部分程序,但有些时候可以添加部分代码,比如需要创建多个对话框时,刚启动时弹出的对话框(比如用于登录)不是主对话框,就可以在这个函数里创建主对话框之前调用登录对话框,这样就可以设置启动时的默认对话框了。

VS2013/MFC基于对话框编程:[3]程序执行流程
VS2013/MFC基于对话框编程:[3]程序执行流程

5、应用程序创建完了,程序开始运行了,于是进入消息循环,windows程序的事件都是消息驱动的,每产生一个消息就触发一邗锒凳审个响应事件,消息和事件通过消息映射DECLARE_MESSAGE_MAP()联系在一起。默认包含三个消息: ON_WM_SYSCOMMAND() //响应控制指令 ON_WM_PAINT() //响应绘图消息,用于刷新窗口 ON_WM_QUERYDRAGICON()//当用户拖动最小化窗口时取得光标

VS2013/MFC基于对话框编程:[3]程序执行流程

6、当用户关闭应用程序时,会发送一个WM_C雉搽妤粲LOSE消息,程序响应后结束程序,如何在点击关闭时需要弹出其他对话框(比如用于提示保存),可以通过类向导添加WM_潮贾篡绐CLOSE消息处理函数,变添加相关处理程序,比如:void CDemoDlg::OnClose(){ if (MessageBox(_T("确定退出吗"), _T("提示"), MB_YESNO|MB_ICONWARNING)== IDNO) return; CDialogEx::OnClose();}

VS2013/MFC基于对话框编程:[3]程序执行流程
VS2013/MFC基于对话框编程:[3]程序执行流程

7、这样,一个应用程序通过定义,初始化,由winmain开始,注册、创建、显示窗口,消息响应,程序终止 完成了他的运行周期。

© 手抄报圈