复习
C++
- 三大特性: 封装 , 继承 , 多态
 - 类构造函数:
- 调用顺序 : 先父类后子类, 可以在初始化列表中调用父类构造.
 - 析构顺序 : 先子类后父类
 - 转换构造 : 有且仅有一个非本类类型的参数
 - 默认构造: 没有参数
 - 拷贝构造: 有且仅有一个本类类型的引用的参数
 
 怎么在main函数之前执行代码,比如打印一个hello world.
int fun(){printf("hello\n");return 1;}int g_nNum = fun();int main(){}
class MyClass{public:MyClsas(){printf("hello");}};MyClass g_obj;int main(){}
SDK
- 窗口创建流程
- 设计窗口类
- 绑定类名
 - 绑定窗口回调函数
 
 - 注册窗口类
 - 创建窗口
- 提供一个已注册的窗口类名
 
 - 更新/显示窗口
 - 消息泵
- GetMessage获取消息
 - DispatchMessage将消息分发给窗口
 
 
 - 设计窗口类
 - 消息的处理过程
- WM_XXXX : 窗口消息, 处理窗口创建,窗口关闭等消息(WM_KEYDOWN,WM_LBUTTONDOWN)
 - WM_COMMAND : 基本控件的控件消息
- 处理按钮点击等消息
 
 - WM_NOTIFY : 通用控件的通知消息
- 处理列表控件,树控件的按键,鼠标等消息
 
 
 - 控制使用的过程
- 创建控件 : 都是通过CreateWidnowEx来创建,通过不同的窗口类名来创建不同的空间. 例如,创建按钮, 就是CreateWindowEx(0,L”Button”, ….);
 - 操作控件 : 都是通过SendMessage来操作
- 例如, 将一个单选框设置为选中状态:
SendMessage(hButton,BM_SETCHECK,1,0); 
 - 例如, 将一个单选框设置为选中状态:
 - 响应控件的消息
- 一般都在WM_COMMAND消息中, wParam的低16位保存触发了消息的控件的ID.
 
 
 
- 窗口创建流程
 
MFC
MFC程序:
- 继承CWinApp得到一个自定义的子类
 - 使用CWinApp的子类定义一个全局变量
 - 在CWinApp的子类中重写虚函数: 
BOOL InitInstance() - 虚函数就是MFC的程序入口
 
MFC的窗口
- 使用CDialogEx来操作对话框
 
添加变量
- 给控件绑定一个变量
- 控件类型的绑定 : 将控件绑定到一个MFC的窗口类
 - 值类型的绑定: 将控件绑定到一个非窗口类中,例如可以绑定到CString,也可以绑定到int类型.
 
 - 绑定的流程:
- 在类内声明一个成员变量
- 如果是控件类型绑定, 就使用MFC窗口类作为变量的类型
 - 如果是值类型绑定, 就使用其它类型作为变量的类型
- 需要通过
UpdateData来交换控件和变量的数据 
 - 需要通过
 
 - 在虚函数DoDataExchange中添加代码, 将控件ID和变量名绑定在一起.
- 控件绑定的使用, 使用:
DDX_Control(pDX, 控件ID, 成员变量名); - 值绑定(有很多函数,需要根据控件的类型来选择), 使用:
DDX_xxx(pDx,控件ID, 成员变量名)
一般, 编辑框使用的:DDX_Text,复选框,使用是DDX_Check
至于使用哪一种都不需要记忆, MFC的类向导功能会自动选择. 
 - 控件绑定的使用, 使用:
 
 - 在类内声明一个成员变量
 
添加对话框类
- 先添加对话框资源
 - 再添加一个MFC类
- 需要继承CDialogEx类
 - 声明并定义消息映射表
 - 重写DoDataExchange虚函数
 - 需要在构造函数中调用父类构造, 并将对话框的资源ID传递给父类构造
 
 
响应消息和类向导
- 窗口消息
- 对话框初始化消息
 - WM_SIZE, WM_LBUTTONDOWN
 - 需要用到类向导
 
 - 控件消息
- 按钮点击 : 直接在对话框视图上双击.
 - 其它控件的消息的响应需要用到类向导
项目
mfc_001.zip 
 
