一、创建MFC项目
创建MFC项目时,高级功能一般默认即可,但如果用不上“ActiveX 控件”可以去掉勾选;如果需要涉及网络编程就把 “Windows 套接字” 选上。 不过没选上也不要紧, 在程序中可以自己添加部分代码导入套接字。
二、整体架构
学会看资源视图和类视图来快速寻找某些需要的东西
比如通过类视图可以快速访问类的头文件和源文件,双击类名打开头文件,点击下方的函数可直接跳转到对应的函数定义处
整个项目文件系统中会有两个 debug 文件夹,项目的直接目录下的 debug 文件夹包含了生成的 exe 文件,其中的.ilk 文件用于编译连接
项目名称下的文件夹里包含了应用程序用到的资源,头文件,源文件等
项目名称下的文件夹包含一个 res 文件夹,是用来存放应用程序图标的,可以自己替换从而更改应用图标,不过名称和格式要一致,否则无法识别
三、程序执行流程
每创建一个项目,一般会包含 3 个类,“关于”对话框类、主对话框类以及用于初始化项目的 App 类,假如项目名称为 Demo,那么这三个类分别为CAboutDlg、CDemoDlg、CDemoApp
1、项目生成后,都会生成一个属于 CDemoApp 类的 theApp 对象,对本应用程序实例化,这个在 CDemoApp.cpp 文件中定义, 创建时调用构造函数 CDemoApp::CDemoApp(); 这就是程序创建的第一步
2、接下来程序会调用 winmain 函数, 这个在项目文件中找不到,但可以在 VS2013 的安装路径下找到
3、调用完 winmain 后,就通过 InitInstance()函数初始化窗口, 包括注册、 创建和显示对话框,InitInstance 函数是 CDemoApp 类中除构造函数以外唯一的成员函数
4、应用程序创建完了,程序开始运行了,于是进入消息循环,windows 程序的事件都是消息驱动的,每产生一个消息就触发一个响应事件,消息和事件通过消息映射
DECLARE_MESSAGE_MAP()联系在一起
默认包含三个消息:
ON_WM_SYSCOMMAND() //响应控制指令
ON_WM_PAINT() //响应绘图消息,用于刷新窗口
ON_WM_QUERYDRAGICON()//当用户拖动最小化窗口时取得光标
5、当用户关闭应用程序时,会发送一个 WM_CLOSE 消息,程序响应后结束程序,如何在点击关闭时需要弹出其他对话框(比如用于提示保存),可以通过类向导添加 WM_CLOSE 消息处理函数,变添加相关处理程序
四、对话框类
首先看看对话框类的继承关系, 新建的项目类派生于 CDialogEx 类, CDialogEx 在 CDialog 类的基础上进行了扩展,而 CDialog 派生于窗口类 CWnd,说明对话框也属于一种窗口