VS2013 MFC基于对话框编程
来源:互联网 发布:网络拓扑算法 编辑:程序博客网 时间:2024/05/20 16:13
前言
一直利用Qt库做Ui设计,但针对于一些MFC项目,掌握一些必要的MFC开发技巧还是很有必要的。这篇博客里就将自己所学的一些MFC浅显知识记录一下,方便今后的学习。博客里只记录关键步骤。
一、新建MFC项目
- 选择:基于对话框
- MFC的使用:
在共享DLL中使用MFC (程序运行需要dll)
在静态库中使用MFC (程序较大,运行时不需要dll) - 设置MFC程序主框架样式和标题
高级功能
若是用不上“ActiveX控件”可以去掉勾选,若要涉及到网络编程就把“windows嵌套字”选上完成
二、MFC程序执行流程
- 每创建一个MFC项目,默认包含3个类,“关于”对话框、主对话框类、初始化项目的App类。
- 项目生成后,都会有一个属于App类的theApp对象,对本应用程序实例化。
// CMFCTest1App 构造CMFCTest1App::CMFCTest1App(){ // 支持重新启动管理器 m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance 中}// 唯一的一个 CMFCTest1App 对象CMFCTest1App theApp;
- 应用程序创建完成,程序开始运行,进入消息循环,windows程序的事件都是消息驱动的,每产生一个消息就触发一个响应事件,消息和事件通过声明消息映射
DECLARE_MESSAGE_MAP()
联系在一起。
默认包含三个消息:
BEGIN_MESSAGE_MAP(CMFCTest1Dlg, CDialogEx) ON_WM_SYSCOMMAND() //响应控制指令 ON_WM_PAINT() //响应绘图消息,用于刷新窗口 ON_WM_QUERYDRAGICON() //当用户拖动最小化窗口时取得光标END_MESSAGE_MAP()
- 当应用程序关闭时,会发送WM_CLOSE消息,程序相应后结束。在类向导中可以添加消息处理函数。
void CMFCTest1Dlg::OnClose(){ // TODO: 在此添加消息处理程序代码和/或调用默认值 if (MessageBox(_T("确定退出吗"),_T("提示"),MB_YESNO|MB_ICONWARNING)==IDNO) { return; } CDialogEx::OnClose();}
5.应用程序通过定义,初始化,由winmain开始,注册、创建、显示窗口,消息响应,程序终止,结束运行周期
三、对话框类
- afx_msg宏
afx_msg宏没有任何语法上的实际意义。afx_msg宏表示声明的是一个消息响应函数。 - DoDataExchange函数
用于存放各类控件的变量信息 - OnInitDialog函数
用于初始化对话框 - OnSysCommand系统指令响应函数,默认处理窗口最小化和最大化指令等
- OnPaint绘图消息响应函数
调出类向导
项目->类向导,快捷键Ctrl+shilft+X四、添加按钮
将默认对话框中的静态文本和原有按钮删除,添加新的按钮1和按钮2,在属性页中可以查看并设置。一般只需要修改两个属性,“Caption”和“ID”,前者是按钮的文本,后者是其唯一标识。
为按钮添加事件处理函数
实现按钮的功能
添加按钮的控件型变量,变量命名一般以“m_”开头,后面部分为按钮功能简要说明。- 在初始化函数OnInitDialog中修改Exit对话框不可用
// TODO: 在此添加额外的初始化代码 m_Exit.EnableWindow(FALSE);
- 添加处理事件
void CMFCTest1Dlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 CString str; m_Enable.GetWindowTextW(str); if (str=="使能") { m_Exit.EnableWindow(TRUE); m_Enable.SetWindowTextW(_T("使不能")); } else { m_Exit.EnableWindow(FALSE); m_Enable.SetWindowTextW(_T("使能")); }}void CMFCTest1Dlg::OnBnClickedButton2(){ // TODO: 在此添加控件通知处理程序代码 SendMessage(WM_CLOSE, 0, 0);}
- 6.
0 0
- VS2013 MFC基于对话框编程
- VS2013/MFC基于对话框编程:文本超链接
- VS2013/MFC基于对话框编程:自定义消息
- VS2013/MFC基于对话框编程: [1]创建MFC工程
- VS2013/MFC基于对话框编程:[5]按钮的使用
- VS2013/MFC基于对话框编程:[11]编辑框
- VS2013/MFC编程入门之十五(对话框:消息对话框)
- VS2013/MFC编程入门之十六(对话框:文件对话框)
- VS2013/MFC编程入门之十七(对话框:字体对话框)
- VS2013/MFC编程入门之十八(对话框:颜色对话框)
- VS2013/MFC编程基础——对话框的编程
- MFC编程--添加基于对话框的菜单栏
- VS2013/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)
- 【MFC-9】VS2010/MFC基于对话框的SQlite3数据库编程
- VS2013/MFC编程入门之六(对话框:为对话框添加控件)
- VS2013/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- VS2013/MFC编程入门之九(对话框:设置对话框控件的Tab顺序)
- VS2013/MFC编程入门之十(对话框:模态对话框及其弹出过程)
- java下载文件名称各种浏览器兼容问题
- 【HDU】-1568-Fibonacci(公式+log取小数)
- Connection cannot be null when 'hibernate.dialect' not set问题的解决
- Trafodion TMUDF(Table-Mapping UDF)
- Android-设置屏幕亮度默认为自动调节
- VS2013 MFC基于对话框编程
- Mybatis极其(最)简(好)单(用)的一个分页插件
- Objective-C Runtime[细读]
- c语言中对文件修改后放入同一文件中
- mysql导入数据load data infile用法(将txt文件中的数据导入表中)
- Structs2 输入校验,Action中校验,在xml中校验
- Revit开发创建部件和部件视图
- 相对布局(RelativeLayout)
- SPDY协议 - v3