MFC原理简介,新手看懂MFC代码
2017-07-23 21:30
225 查看
在编程时程序员会看到一个以工程名为类名的类创建的名为 theAPP 的对象,这个对象就是我们要写的程序。(该类是 CWinApp的派生类)
上面提到的以工程名为类名的类有一个成员函数,其函数原型为
该函数就是我们写程序体的地方,在这个函数中写一个MessageBox函数,那么你按F5时就会弹出一个消息框
如何让自己写的程序弹出一个对话框呢?
首先,需要添加对话框资源
其次需要在上面提到的InitInstance()函数中写淡出对话框的代码
使用CDialogEx创建一个对话框对象(参数为对话框ID)并调用DoModal成员函数,即可调用对话框
使用派生类时不需要传递参数,因为这个派生类的构造函数会自动向基类送参数
基于对话框的MFC程序的构架一般是两个类,一个类是上面提到的会生成 theAPP 对象的类,另一个是写主对话框中的内容的类
第二个类中需要编写消息处理函数,所谓消息处理函数举个例子就是,你点一下对话框中的确定按钮,然后程序实现什么功能
简单来说,一个消息ID对应一个消息处理函数,就像这样:
在VS的类向导中可以看到所有以WM_为前缀的消息
也有些函数没有对应的消息ID,因为与这些函数对应的消息是唯一的,无需使用消息ID来区分
- 必须有一个CWinApp的派生类;
- 必须用派生类在全局定义一个对象theApp;
- 在派生类中必须重写InitInstance虚函数;
- MFC程序就用CWinApp派生类中的InitInstance虚函数作为主函数;
MFC对话框程序的消息处理(消息映射机制)
- 为一个对话框模板建立一个与之关联的CDialog或CDialogEx派生类;
- 在需要启动对话框用派生类定义一个对象,在用对象调用DoModal成
4000
员函数;
- MFC如果要处理一个消息,只要打开类向导,选择在下拉中这个对话框类;
- 在消息列表中就可以选择你需要的消息,双击即可建立消息映射函数;
- 消息映射函数就是:一个消息(和一个窗口)对应一个函数的地址
参考资料:
吕鑫MFC教程
上面提到的以工程名为类名的类有一个成员函数,其函数原型为
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成
4000
员函数;
- MFC如果要处理一个消息,只要打开类向导,选择在下拉中这个对话框类;
- 在消息列表中就可以选择你需要的消息,双击即可建立消息映射函数;
- 消息映射函数就是:一个消息(和一个窗口)对应一个函数的地址
参考资料:
吕鑫MFC教程
相关文章推荐
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
- 关于一些新手MFC入门时,在vs上运行孙鑫老师代码时可能碰到的问题。
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
- JVM大小分配原理简介(易于新手理解)。
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
- Softmax回归原理简介+代码详解
- MD5的简介以及实现其算法原理的各种语言的代码
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解
- DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解
- Android代码混淆ProGuard工作原理简介
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解
- PHP分页原理及代码(新手学习)
- DeepLearning tutorial(1)Softmax回归原理简介+代码详解