开发 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学习笔记(第二版)>详细过程可以阅读此书.在文章的最 ...
随机推荐
- CodeChef A String Game(SG)
A String Game Problem code: ASTRGAME Submit All Submissions All submissions for this problem a ...
- Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence (思维)
Codeforces Round #529 (Div. 3) 题目传送门 题意: 给你由左右括号组成的字符串,问你有多少处括号翻转过来是合法的序列 思路: 这么考虑: 如果是左括号 1)整个序列左括号 ...
- python 列表总结大全
1定义 names=[] names=[1,2,1,1,1,] names=[1.'10'.[1,1]] 2添加元素 names.append() names.insert(0,10) names.e ...
- JavaScript深入之变量对象(转载)
前言 在上篇<JavaScript深入之执行上下文栈>中讲到,当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(executio ...
- this的指向问题 call apply bind 中的this
在函数中this指向谁: 函数中的this指向谁,是由函数被调用的那一刻就确定下来的 平时确定一个函数中的this是谁,我们需要通过调用模式来确定 1. 函数调用模式 this ---> ...
- lodash throttle和debounce
https://lodash.com/docs#debounce throttle(又称节流)和debounce(又称防抖)其实都是函数调用频率的控制器 throttle:将一个函数的调用频率限制在一 ...
- Prometheus + Grafana
Prometheus ubuntu安装prometheus非常简单: apt update apt install prometheus systemctl enable prometheus sys ...
- [AtCoder] Yahoo Programming Contest 2019
[AtCoder] Yahoo Programming Contest 2019 很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...
- Es学习第八课, Filter、bool和范围查询
Filter过滤查询 filter是不计算相关性的,同时可以缓存.因此filter速度快于query. 我们先在kibana上先添加数据来做准备 POST /lib4/items/_bulk { &q ...
- Vue 左右翻页,点赞动画
因做小活动比较多,使用了一些动画,做些笔记,供大家参考 翻页动画 router -> index.js import Vue from 'vue'; import Router from 'vu ...