基于对话框的MFC应用程序基本结构
新建一个基于对话框的MFC应用程序,假设命名为 Test:则该应用程序在刚创建的时候,有4个非常重要的文件和3个类:
4个非常重要的文件 | |
1、Test.h 2、Test.cpp |
(应用程序类头文件) (应用程序类实现文件) |
3、TestDlg.h 4、TestDlg.cpp |
(对话框类头文件) (对话框类实现文件) |
类名 | 定义所在位置 | 类的实现代码所在位置 |
CTestApp | Test.h | Test.cpp |
CTestDlg | TestDlg.h | TestDlg.cpp |
CAboutDlg | TestDlg.cpp | TestDlg.cpp |
每个文件中的内容:
1、 Test.h: |
(1)#pragma once + 非活动预处理 + 各种包含(resource.h + 后续各种类的头文件); (2)CTestApp类的定义(构造函数、重写InitInstance函数,声明消息映射表); (3)extern CTestApp theApp(声明了一个应用程序对象); |
2、 Test.cpp: |
(1)各种包含头文件(stdafx.h + Test.h + TestDlg.h)+ 活动预处理; (2)消息映射表(BEGIN~END); (3)应用程序类构造函数:CTestApp(); (4)声明唯一的一个CTestApp对象; (5)CTestApp初始化函数:InitInstance(); |
3、 TestDlg.h: |
(1)#pragma once + 各种包含(afxwin.h + 后续的各种类的头文件); (2)CTestDlg类定义(关联的对话框ID + HICON m_hIcon +构造+ DoDataExchange +声明消 息映射函数(OnInitDialog+OnSysCommand+OnPaint+OnQueryDragIcon)+ 声明消息映射表); |
4、 TestDlg.cpp: |
(1)各种包含头文件(stdafx.h + afxdialogex.h + Test.h + TestDlg.h) + 活动预处理; (2)CAboutDlg类的定义(关联的对话框ID + 构造 + DoDataExchange + 声明消息映射表)+ 实现(构造 + DoDataExchange + 消息映射表BEGIN~END); (3)CTestDlg类的实现(构造 + DoDataExchange + 消息映射表BEGIN~END); (表中有3个消息ON_WM_SYSCOMMAND + ON_WM_PAINT + ON_WM_QUERYDRAGICON) (4)CTestDlg消息处理程序:(消息处理程序对应消息映射表中的消息) OnInitDialog + OnSysCommand + OnPaint + OnQueryDragIcon。 |
基于对话框的MFC应用程序基本结构的更多相关文章
- VS中基于对话框的MFC利用换肤改变边框颜色及格式
第一版本: http://ishare.iask.sina.com.cn/f/13836420.html?from=like 2. http://www.cnblogs.com/phinecos/ar ...
- 如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单
方法1:亲测 成功 转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef ...
- VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
首先,在 vs2008 环境下创建 MFC 运用程序 设置项目名称为 ComTest(这个地方随意命名,根据个人习惯),点击确定后,点击下一步 出现如下界面 选择"基于对话框"模式 ...
- 如何将基于对话框的MFC工程改成基于BCG的
1.stdafx.h 加入如下内容.BCGCBProInc.h间接导入了lib. 2.应用程序类的父类由CWinApp改成CBCGPWinApp.构造函数增加如下代码: 3.对话框的父类有CDialo ...
- 给基于对话框的MFC程序添加状态栏并实时显示时间
转载自丝雪儿 1.首先在string table 里添加两个字串,ID分别为IDS_INDICATOR_MESSAGE and IDS_INDICATOR_TIME 2.在你的 dlg.h 类里面加个 ...
- 基于对话框的Opengl框架
转自:http://blog.csdn.net/longxiaoshi/article/details/8238933 12-11-29 14:55 1198人阅读 评论(6) 收藏 举报 分类: ...
- MFC中在基于对话框的窗体中使用CFileDialog导致菜单栏变灰的解决方案
CSDN的博客编辑器实在是难用……转战博客园 直接把CSDN发的搬过来了 ————————————————————————————我是分割线———————————————————————————— 第 ...
- 2、创建MFC应用程序——基于对话框,时间计时器
使用计时器更新MFC界面时间,频率1s. 文件——新建项目——MFC应用程序,下一步,选择基于对话框,其他默认,完成. 双击窗体(或者鼠标右键)进入类向导,自动创建Ontimer()函数 void C ...
- VS2013 MFC基于对话框编程
前言一直利用Qt库做Ui设计,但针对于一些MFC项目,掌握一些必要的MFC开发技巧还是很有必要的.这篇博客里就将自己所学的一些MFC浅显知识记录一下,方便今后的学习.博客里只记录关键步骤. 一.新建M ...
随机推荐
- spring mvc 框架搭建及详解
现 在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不 ...
- ResponsiveSlides.js 幻灯片实例演示
在线实例 默认效果 导航和分页 缩略图 描述说明 回调函数 <div class="wrap"> <ul class="rslides" ...
- Javascript一些小细节
1.判断class存在 $(obj).hasClass('BTCheck_ON') $obj.attr('class')=="BTCheck_ON" 有时我们判断样式存在会写成第二 ...
- Upgrading or Redeploying SharePoint 2010 Workflows
While creating several State Machine SharePoint 2010 workflows using visual studio for a client I ha ...
- 扩展SharePoint链接字段
默认SharePoint中的链接字段有很多限制,例如 输入文字的时候只能录入255个字符 链接显示的是文字 点击链接后只能在当前页面打开链接 - - - - - - -- - - - - - - ...
- Android拍照保存在系统相册不显示的问题
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(new File(& ...
- [Android]IllegalStateException: Could not find method onBind(View)
FATAL EXCEPTION: main Process: org.diql.aidldemo, PID: 2274 java.lang.IllegalStateException: Could n ...
- Android性能优化--Listview优化
ListView的工作原理 首先来了解一下ListView的工作原理(可参见http://mobile.51cto.com/abased-410889.htm),如图: ListView 针对每个it ...
- swift基础二
import Foundation // MARK: - ?和!的区别 // ?代表可选类型,实质上是枚举类型,里面有None和Some两种类型,其实nil相当于OPtional.None,如果非ni ...
- 【原】iOS动态性(一):动态添加属性的方法——关联(e.g. 向Category添加属性)
想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative ...