复习

  1. C++

    1. 三大特性: 封装 , 继承 , 多态
    2. 类构造函数:
      1. 调用顺序 : 先父类后子类, 可以在初始化列表中调用父类构造.
      2. 析构顺序 : 先子类后父类
      3. 转换构造 : 有且仅有一个非本类类型的参数
      4. 默认构造: 没有参数
      5. 拷贝构造: 有且仅有一个本类类型的引用的参数
    3. 怎么在main函数之前执行代码,比如打印一个hello world.

        1. int fun(){printf("hello\n");return 1;}
        2. int g_nNum = fun();
        3. int main()
        4. {
        5. }
        1. class MyClass{
        2. public:
        3. MyClsas(){
        4. printf("hello");
        5. }
        6. };
        7. MyClass g_obj;
        8. int main()
        9. {
        10. }
  2. SDK

    1. 窗口创建流程
      1. 设计窗口类
        1. 绑定类名
        2. 绑定窗口回调函数
      2. 注册窗口类
      3. 创建窗口
        1. 提供一个已注册的窗口类名
      4. 更新/显示窗口
      5. 消息泵
        1. GetMessage获取消息
        2. DispatchMessage将消息分发给窗口
    2. 消息的处理过程
      1. WM_XXXX : 窗口消息, 处理窗口创建,窗口关闭等消息(WM_KEYDOWN,WM_LBUTTONDOWN)
      2. WM_COMMAND : 基本控件的控件消息
        1. 处理按钮点击等消息
      3. WM_NOTIFY : 通用控件的通知消息
        1. 处理列表控件,树控件的按键,鼠标等消息
    3. 控制使用的过程
      1. 创建控件 : 都是通过CreateWidnowEx来创建,通过不同的窗口类名来创建不同的空间. 例如,创建按钮, 就是CreateWindowEx(0,L”Button”, ….);
      2. 操作控件 : 都是通过SendMessage来操作
        1. 例如, 将一个单选框设置为选中状态:
          SendMessage(hButton,BM_SETCHECK,1,0);
      3. 响应控件的消息
        1. 一般都在WM_COMMAND消息中, wParam的低16位保存触发了消息的控件的ID.

MFC

MFC程序:

  1. 继承CWinApp得到一个自定义的子类
  2. 使用CWinApp的子类定义一个全局变量
  3. 在CWinApp的子类中重写虚函数: BOOL InitInstance()
  4. 虚函数就是MFC的程序入口

MFC的窗口

  • 使用CDialogEx来操作对话框

添加变量

  1. 给控件绑定一个变量
    1. 控件类型的绑定 : 将控件绑定到一个MFC的窗口类
    2. 值类型的绑定: 将控件绑定到一个非窗口类中,例如可以绑定到CString,也可以绑定到int类型.
  2. 绑定的流程:
    1. 在类内声明一个成员变量
      1. 如果是控件类型绑定, 就使用MFC窗口类作为变量的类型
      2. 如果是值类型绑定, 就使用其它类型作为变量的类型
        1. 需要通过UpdateData来交换控件和变量的数据
    2. 在虚函数DoDataExchange中添加代码, 将控件ID和变量名绑定在一起.
      1. 控件绑定的使用, 使用:
        DDX_Control(pDX, 控件ID, 成员变量名);
      2. 值绑定(有很多函数,需要根据控件的类型来选择), 使用:
        DDX_xxx(pDx,控件ID, 成员变量名)
        一般, 编辑框使用的:DDX_Text,复选框,使用是DDX_Check
        至于使用哪一种都不需要记忆, MFC的类向导功能会自动选择.

添加对话框类

  1. 先添加对话框资源
  2. 再添加一个MFC类
    1. 需要继承CDialogEx类
    2. 声明并定义消息映射表
    3. 重写DoDataExchange虚函数
    4. 需要在构造函数中调用父类构造, 并将对话框的资源ID传递给父类构造

响应消息和类向导

  1. 窗口消息
    1. 对话框初始化消息
    2. WM_SIZE, WM_LBUTTONDOWN
    3. 需要用到类向导
  2. 控件消息
    1. 按钮点击 : 直接在对话框视图上双击.
    2. 其它控件的消息的响应需要用到类向导

      项目

      mfc_001.zip