MFC原理简介,新手看懂MFC代码

  • 在编程时程序员会看到一个以工程名为类名的类创建的名为 theAPP 的对象,这个对象就是我们要写的程序。(该类是 CWinApp的派生类)
  • 上面提到的以工程名为类名的类有一个成员函数,其函数原型为

    BOOL InitInstance()

    该函数就是我们写程序体的地方,在这个函数中写一个MessageBox函数,那么你按F5时就会弹出一个消息框

  • 如何让自己写的程序弹出一个对话框呢?

    • 首先,需要添加对话框资源
    • 其次需要在上面提到的InitInstance()函数中写淡出对话框的代码
    • 使用CDialogEx创建一个对话框对象(参数为对话框ID)并调用DoModal成员函数,即可调用对话框

      CDialogEx dlg(对话框ID);
      dlg.DoModal();
    • 使用派生类时不需要传递参数,因为这个派生类的构造函数会自动向基类送参数

      CDialog dlg();        //CDialog是CDialogEx的派生类
      dlg.DoModal();
  • 基于对话框的MFC程序的构架一般是两个类,一个类是上面提到的会生成 theAPP 对象的类,另一个是写主对话框中的内容的类

  • 第二个类中需要编写消息处理函数,所谓消息处理函数举个例子就是,你点一下对话框中的确定按钮,然后程序实现什么功能

    简单来说,一个消息ID对应一个消息处理函数,就像这样:

    ON_BN_CLICKED(IDOK, &CMFC应用Dlg::OnBnClickedOk()

    IDOK这个消息对应OnBnClickedOk()函数

    • 在VS的类向导中可以看到所有以WM_为前缀的消息

    也有些函数没有对应的消息ID,因为与这些函数对应的消息是唯一的,无需使用消息ID来区分

总结一下

MFC的组成:
- 必须有一个CWinApp的派生类;
- 必须用派生类在全局定义一个对象theApp;
- 在派生类中必须重写InitInstance虚函数;
- MFC程序就用CWinApp派生类中的InitInstance虚函数作为主函数;

MFC对话框程序的消息处理(消息映射机制)
- 为一个对话框模板建立一个与之关联的CDialog或CDialogEx派生类;
- 在需要启动对话框用派生类定义一个对象,在用对象调用DoModal成员函数;
- MFC如果要处理一个消息,只要打开类向导,选择在下拉中这个对话框类;
- 在消息列表中就可以选择你需要的消息,双击即可建立消息映射函数;
- 消息映射函数就是:一个消息(和一个窗口)对应一个函数的地址

参考资料:
吕鑫MFC教程

你可能感兴趣的:(c++)