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. [51nod 1681]公共祖先(dfs序+线段树合并)

    [51nod 1681]公共祖先(dfs序+线段树合并) 题面 给出两棵n(n<=100000)个点的树,对于所有点对求它们在两棵树中公共的公共祖先数量之和. 如图,对于点对(2,4),它们在第 ...

  2. java中关于异常的处理

    初学java的时候,当我们碰到异常时,一般会把异常直接throws抛出去,或则在catch的时候,简单的写一句打印异常信息,但是在实际开发中,是不能这么做的.如果我们将底层的某一个异常简单的print ...

  3. java中位运算^,&,<<,>>,<<<,>>>总结

    1.^(亦或运算) ,针对二进制,相同的为0,不同的为1 public static void main(String[] args) { System.out.println("2^3运算 ...

  4. oooooooooooooooo

    安装后打开mysqld配置项加入skip-grant-tables可以无密码登录,登录进去后修改密码修改成功删除skip-grant-tables mysql> select user, plu ...

  5. NHibernet 事务 修改操作,事务没提交,数据库数据却同步(修改)了

    Nhibernet 缓存 由于查询出来的数据和缓存关联,更新之后就算事务没执行提交操作,数据库依旧会更新,解决方法, 清空缓存,实例不和缓存关联,如下面标红代码 public bool UpdateT ...

  6. C语言文件读写操作

    C语言实现文件读写,注意区分几个方法: 写入: fwrite() //个人认为这个最好,可是实现写入任何数据类型,任何长度 fputs() //写入一个字符串,字符串长度不能太长,具体的长度未知,但估 ...

  7. ltp-ddt genload

    under folder tools\genload   genload.c             "`%s' imposes certain types of compute stres ...

  8. .net core 集成极光推送

    登录极光推送 创建应用 appkey和master secret在推送时会使用 设置推送 使用手机扫描二维码安装apk 下载dll 测试 using Jiguang.JPush; using Jigu ...

  9. js 弹窗并定时关闭

    1. $('input').click(function() { prompt('点击成功', 2000) }) function prompt(newName, time, fn) { var $d ...

  10. 前端每日实战:49# 视频演示如何用纯 CSS 创作一支诱人的冰棍

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/vrxzMw 可交互视频教程 此视频 ...