1.创建用户接口
一般使用 Visual C++内置的资源编辑器创建用户接口,用户接口主要包括菜单、加速键、
对话框、位图、图标、光标、工具栏以及其他资源等。通常,应用向导创建的资源文件包含
了工程所需要的许多资源,但也允许使用资源编辑器对原有的资源进行编辑,或者添加新的
资源。
2.映射命令消息
命令消息的处理接口一般为菜单和工具栏,使用类向导( ClassWizard)或者向导栏
( WizardBar)为菜单和加速键映射命令消息处理函数,然后,为工具栏中的每个按钮分配一
个合适的命令 ID,以便将其映射到菜单或者加速键命令。接着,使用类向导或者类视
( ClassView)直接跳到源代码中相应函数的位置,添加函数的实现代码。最后使用内建的调
试工具重建程序,以便测试处理函数的有效性。
3.对话框编程
使用对话框编辑器设计对话框模板,然后,使用类向导创建处理对话框的类和代码。
可以定义对话框控件的初始化以及数据验证的方式,接着,使用类向导为对话框的控件添
加相应的成员变量。如果需要的话,也可以在添加控件变量时指定用户向控件输入的验证
规则。
4.添加新类
使用类向导、向导栏或者类视创建另外的文档类、视图类或者框架窗口类,也可以创建
另外的数据库记录集类、对话框类以及其他的任何类。

5.实现文档类
实现应用特定的文档类主要是为其添加用于保存数据结构的成员变量,以及对数据提供
用户接口的成员函数。如果需要,那么还要实现“打开”、 “保存”以及“另存为”等命令,
此时需要编写文档类的 Serialize 成员函数。

6.实现视图类
因为文档的视图类有的时候不止一个,所以要实现所有与文档类相关的视图类。视图类的实现部分主要在于使用类向

导映射用户接口成员函数。另外,如果需要支持多页打印则需重载视图类的成员函数。最后,一般视图类的 OnDraw

成员也需要编写,视其具体需求而定。

7.实现框架类
框架类主要用于实现命令消息的处理等。因为该类主要负责命令的接收,不过,它首先将命令消息传递给视图和文档,

因此,不是过分依赖文档和视图的消息可以由框架类负
责处理。
8.创建、调试应用
所有的步骤完成之后,可以重建应用并且往往经过多次调试才能最终发布。上述步骤涵盖了一般应用程序的创建过程,

不过一些复杂的应用开发可能不止上述 8 个步骤。


                                    ——引用自《精通MFC程序设计》

开发 MFC 应用的一般过程的更多相关文章

  1. MFC程序的启动过程——先全局对象theApp(第一入口),后WinMain(真正入口),会引爆pApp->InitInstance从而创建窗口(程序员入口)

    原文出自:http://blog.csdn.net/yuvmen/article/details/5877271 了解MFC程序的启动过程,对于初学者来讲,了学习MFC很有帮助:对于不常用VC的人来说 ...

  2. 我在开发第一个Swift App过程中学到的四件事

    本文转载至 http://www.itjhwd.com/wzkfyigeswiftsjs/ 译者注:本文作者Greg Heo,这是他为讲授iOS 8 App Extensions视频教程而实际使用Sw ...

  3. VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

      开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网 ...

  4. VS2010开发MFC ActiveX,摄像头拍照上传Webservice(1)

    最近工作项目,BS中需要用到摄像头拍照,需要存储本地,同时上传到服务器,尝试使用vc++做ActiveX来实现. 完全没有使用过vc,上网搜索各种知识,初步完成.在这里记录下有帮助的资料. 第一步:编 ...

  5. Xcode8开发iOS10推送通知过程

    iOS10发布后,简书优先开发增加了iOS10的新通知.本文分享整个feature的开发过程遇到的问题. 1.工程配置 Xcode8发生了很大的变化,直接打开原来的工程编译运行,这个时候是获取不到Pu ...

  6. 搭建OpenWrt开发环境(包括编译过程)

    OpenWrt是一个高度模块化.高度自动化的嵌入式linux发行版,其编译和安装过程比普通的linux发行版而言,要简单太多了.如果您是新手,您那恐惧的心大可放到肚子里,呵呵.对于新手来说最麻烦的恐怕 ...

  7. cmake编译dcmtk,并利用vs2010 进行开发mfc 程序

    这几天要处理 医学图像数据,经同学推荐 采用 dcmtk 关于 编译 dcmtk 是可参考如下blog 1. http://blog.csdn.net/okaimee/article/details/ ...

  8. DB2开发系列之二——SQL过程

    1.SQL 过程的结构 1)SQL过程的结构 CREATE PROCEDURE proc_name   IN, OUT, INOUT parameters   optional clauses   S ...

  9. javaee开发工具及环境配置过程

    在配置javaee开发环境的过程中遇到过很多问题,在此系统的整理一下我之前的配置过程 注:配置过程学习自<JSP&Servlet学习笔记(第二版)>详细过程可以阅读此书.在文章的最 ...

随机推荐

  1. 合并石子 (区间dp+前缀和)

    [题目描述] N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.计算出将N堆石子合并成一堆的最小得分. [题目链接] http: ...

  2. IIS故障 应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。

    (尝试失败,但觉得有可行性) 参考https://www.cnblogs.com/qidian10/p/6028784.html https://yq.aliyun.com/articles/6434 ...

  3. H5中滚动到底部的事件

    问题:在H5中,我们有这样的需求:例如有列表的时候,滚动到底部时,需要加载更多. 解决方案:可以采用window的滚动事件进行处理 分析:如果滚动是针对整个屏幕而言的(不针对于某个界面小块),那么这个 ...

  4. "=="、equals、hashCode之间的区别

    1. "=="分为两种情况: (1) 基本数据类型,比较的是其对应的值是否相等: (2) 引用类型,比较的是他们在内存中存放的地址(或者说,是否指向同意对象). 2. equals ...

  5. git提交代码冲突解决

    1.git stash save "说明信息" 2.git stash lish 3.git pull 4.git stash pop stash@{编号}

  6. 一、Angular环境的搭建

    1.安装nodejs (1) 下载网址https://nodejs.org/en/download/ (2) 双击进行安装 (3) 打开命令行,输入node -v 和 npm -v 查看是否安装成功 ...

  7. springboot中使用RabbitMq

    转载:http://www.ityouknow.com/springboot/2016/11/30/spring-boot-rabbitMQ.html RabbitMQ 即一个消息队列,主要是用来实现 ...

  8. Redis Key过期事件

    解决方案1: 可以利用redis天然的key自动过期机制,下单时将订单id写入redis,过期时间30分钟,30分钟后检查订单状态,如果未支付,则进行处理但是key过期了redis有通知吗?答案是肯定 ...

  9. Sublime Text3添加C++编译与运行

    安装MinGW 1.安装MinGW ,其安装方法一直下一步,安装完后点Continue会出现一个窗口,在Basic Setup下标记所有包,然后在菜单里点"Apply Changes&quo ...

  10. SpringBoot---提供的自动配置

    1.自动配置的ViewResolver 1.1.ContentNegotiatingViewResolver 1.2.BeanNameViewResolver 1.3.InternalResource ...