开发 MFC 应用的一般过程
1.创建用户接口
一般使用 Visual C++内置的资源编辑器创建用户接口,用户接口主要包括菜单、加速键、
对话框、位图、图标、光标、工具栏以及其他资源等。通常,应用向导创建的资源文件包含
了工程所需要的许多资源,但也允许使用资源编辑器对原有的资源进行编辑,或者添加新的
资源。
2.映射命令消息
命令消息的处理接口一般为菜单和工具栏,使用类向导( ClassWizard)或者向导栏
( WizardBar)为菜单和加速键映射命令消息处理函数,然后,为工具栏中的每个按钮分配一
个合适的命令 ID,以便将其映射到菜单或者加速键命令。接着,使用类向导或者类视
( ClassView)直接跳到源代码中相应函数的位置,添加函数的实现代码。最后使用内建的调
试工具重建程序,以便测试处理函数的有效性。
3.对话框编程
使用对话框编辑器设计对话框模板,然后,使用类向导创建处理对话框的类和代码。
可以定义对话框控件的初始化以及数据验证的方式,接着,使用类向导为对话框的控件添
加相应的成员变量。如果需要的话,也可以在添加控件变量时指定用户向控件输入的验证
规则。
4.添加新类
使用类向导、向导栏或者类视创建另外的文档类、视图类或者框架窗口类,也可以创建
另外的数据库记录集类、对话框类以及其他的任何类。
5.实现文档类
实现应用特定的文档类主要是为其添加用于保存数据结构的成员变量,以及对数据提供
用户接口的成员函数。如果需要,那么还要实现“打开”、 “保存”以及“另存为”等命令,
此时需要编写文档类的 Serialize 成员函数。
6.实现视图类
因为文档的视图类有的时候不止一个,所以要实现所有与文档类相关的视图类。视图类的实现部分主要在于使用类向
导映射用户接口成员函数。另外,如果需要支持多页打印则需重载视图类的成员函数。最后,一般视图类的 OnDraw
成员也需要编写,视其具体需求而定。
7.实现框架类
框架类主要用于实现命令消息的处理等。因为该类主要负责命令的接收,不过,它首先将命令消息传递给视图和文档,
因此,不是过分依赖文档和视图的消息可以由框架类负
责处理。
8.创建、调试应用
所有的步骤完成之后,可以重建应用并且往往经过多次调试才能最终发布。上述步骤涵盖了一般应用程序的创建过程,
不过一些复杂的应用开发可能不止上述 8 个步骤。
——引用自《精通MFC程序设计》
开发 MFC 应用的一般过程的更多相关文章
- MFC程序的启动过程——先全局对象theApp(第一入口),后WinMain(真正入口),会引爆pApp->InitInstance从而创建窗口(程序员入口)
原文出自:http://blog.csdn.net/yuvmen/article/details/5877271 了解MFC程序的启动过程,对于初学者来讲,了学习MFC很有帮助:对于不常用VC的人来说 ...
- 我在开发第一个Swift App过程中学到的四件事
本文转载至 http://www.itjhwd.com/wzkfyigeswiftsjs/ 译者注:本文作者Greg Heo,这是他为讲授iOS 8 App Extensions视频教程而实际使用Sw ...
- VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网 ...
- VS2010开发MFC ActiveX,摄像头拍照上传Webservice(1)
最近工作项目,BS中需要用到摄像头拍照,需要存储本地,同时上传到服务器,尝试使用vc++做ActiveX来实现. 完全没有使用过vc,上网搜索各种知识,初步完成.在这里记录下有帮助的资料. 第一步:编 ...
- Xcode8开发iOS10推送通知过程
iOS10发布后,简书优先开发增加了iOS10的新通知.本文分享整个feature的开发过程遇到的问题. 1.工程配置 Xcode8发生了很大的变化,直接打开原来的工程编译运行,这个时候是获取不到Pu ...
- 搭建OpenWrt开发环境(包括编译过程)
OpenWrt是一个高度模块化.高度自动化的嵌入式linux发行版,其编译和安装过程比普通的linux发行版而言,要简单太多了.如果您是新手,您那恐惧的心大可放到肚子里,呵呵.对于新手来说最麻烦的恐怕 ...
- cmake编译dcmtk,并利用vs2010 进行开发mfc 程序
这几天要处理 医学图像数据,经同学推荐 采用 dcmtk 关于 编译 dcmtk 是可参考如下blog 1. http://blog.csdn.net/okaimee/article/details/ ...
- DB2开发系列之二——SQL过程
1.SQL 过程的结构 1)SQL过程的结构 CREATE PROCEDURE proc_name IN, OUT, INOUT parameters optional clauses S ...
- javaee开发工具及环境配置过程
在配置javaee开发环境的过程中遇到过很多问题,在此系统的整理一下我之前的配置过程 注:配置过程学习自<JSP&Servlet学习笔记(第二版)>详细过程可以阅读此书.在文章的最 ...
随机推荐
- 金蝶云k3 cloud采购入库单校验日期不通过
新增采购入库单的时候提示单据日期必须大于等于货主组织在核算系统最后关账日期 解决办法:库存系统和存货核算系统的反关账
- UIViewController push或presentViewController 弹出方式
//导航控制器数量 add xjz 判断是push还是present出来的 NSArray *viewcontrollers = self.navigationController.viewContr ...
- psfstriptable - 从控制台字体中移走嵌入的Uniocde字符表
总览 psfstriptable 字体文件 [输出文件] 描述 psfstriptable 命令从 字体文件 或者标准输入(此时的 字体文件 是单个破折号(-))读取一个可能含有嵌入Unicode字体 ...
- C语言文件读写操作
C语言实现文件读写,注意区分几个方法: 写入: fwrite() //个人认为这个最好,可是实现写入任何数据类型,任何长度 fputs() //写入一个字符串,字符串长度不能太长,具体的长度未知,但估 ...
- 一、WebFrom 图片上传
一.代码实现了简单的图片上传功能(改一下也可以上传其他的),没有做图片大小和格式的判断,主要是熟悉fileupload控件 前台代码: <%@ Page Language="C#&qu ...
- leetcode 001
1 Two Sum Difficulty: Easy The Link: https://leetcode.com/problems/two-sum/description/ Description ...
- Sass函数:Opacity函数-opacify()、fade-in()函数
这两个函数是用来对已有颜色的透明度做一个加法运算,会让颜色更加不透明.其接受两个参数,第一个参数是原始颜色,第二个参数是你需要增加的透明度值,其取值范围主要是在 0~1 之间.当透明度值增加到大于 1 ...
- Sass Maps的函数-map-remove($map,$key)、keywords($args)
map-remove($map,$key) map-remove($map,$key) 函数是用来删除当前 $map 中的某一个 $key,从而得到一个新的 map.其返回的值还是一个 map.他并不 ...
- Sass函数:值列表函数length
length() 函数主要用来返回一个列表中有几个值,简单点说就是返回列表清单中有多少个值: >> length(10px) 1 >> length(10px 20px (bo ...
- hdu 4235 容斥原理模板题
题目大意: 输入样例个数T,每个样例输入三个数a,b,n,求[a,b]之间与n互素的个数 基本思路: 互斥,想想这个:AUBUC=A+B+C-A∩B-A∩C-B∩C+A∩B∩C fac存的是n的素因数 ...