VC++6.0MFC运行的简单流程
背景:
由于下位机做的一些东西,总是需要通过上位机来验证,以及为了直观给客户展示下位机的功能,所以时常需要编写一些简单的APP。今天就以VC++6.0为例,简单的记录下该如何快速的创建一个APP。
正文:
首先,本次工程文件名为“GPIOTest”,按照MFC向导一路往下,使用Dialog base窗口,结果会生成三个分类文件夹“Source files”、“Head files”、“Resource files”。具体存放什么就不用说了。
其中会生成三个“.cpp”文件,“GPIOTest.cpp”、“GPIOTestDlg.cpp”、“StdAfx.cpp”
运行顺序是:
最开始在“GPIOTest.cpp”中:CGPIOTestApp::CGPIOTestApp() --> CGPIOTestApp::InitInstance() -->
对于InitInstance()这个函数有必要贴出来说明下,代码如下:
BOOL CSBC7111GPIO_APPApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need. #ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif CSBC7111GPIO_APPDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
/* 运行到这里的时候,就在DoModal()这个函数里执行循环,响应
* 各种消息,譬如移动窗体时,调用OnPaint()函数;点击菜单栏时,
* 调用SysCommand()函数等等,直到,点击了“X”,或者关闭事件,
* 即会退出DoModal()循环,返回一个参数。即以下函数所写。
*/
if (nResponse == IDOK) {
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL) {
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
接着进入到“GPIOTestDlg.cpp”文件中的函数:
CGPIOTestAppDlg::CGPIOTestAppDlg(CWnd* pParent /*=NULL*/): CDialog(CGPIOTestAppDlg::IDD, pParent) --> CGPIOTestAppDlg::DoDataExchange(CDataExchange* pDX) --> ::OnInitDialog()。
之后即可以在OnInitDialog()函数内添加自己的代码了。一般都是对界面的一些控件初始化,由于现在还未使用到类似QT的信号槽之类的功能,所以暂时不做记录。
另外粗略说明以下两个函数的作用:
CGPIOTestAppDlg::OnPaint(),顾名思义,即当窗口有变化时会调用该函数,譬如放大缩小,移动等等;
CGPIOTestAppDlg::::OnSysCommand(UINT nID, LPARAM lParam),该函数一般在用户使用鼠标点击菜单栏时会使用。
记录地点:深圳WZ
记录时间:2016年3月3日
VC++6.0MFC运行的简单流程的更多相关文章
- 玩转Windows服务系列——服务运行、停止流程浅析
通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大家可要睁大眼睛看清楚了. 接下来研究一下Windows服务的 ...
- 玩转Windows服务系列——服务运行、停止流程浅析
原文:玩转Windows服务系列——服务运行.停止流程浅析 通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大 ...
- [转] Linux下程序的加载、运行和终止流程
TAG: linux, main, _start DATE: 2013-08-08 原文地址: http://blog.csdn.net/tigerscorpio/article/details/62 ...
- git分布式版本控制系统权威指南学习笔记(一):配置文件、简单流程和小问题
文章目录 git配置文件简介 git config各种命令 配置级别: 用户信息 文本编辑器 差异分析工具 配置命令别名 公钥 git协同流程 简单流程 初始化版本库 提交至缓存区 查看状态 提交分支 ...
- django入门 -- 简单流程
django入门 -- 简单流程 简介 通过简单示例,使用django完成基本流程的开发,学习django的主要的知识点,在后续课程中会逐个知识点进行深入讲解 以“图书-英雄”管理为示例 主要知识点介 ...
- Web程序的运行原理及流程(一)
自己做Web程序的开发也有两年多了 从最开始跟风学框架 到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来 我当时第一次做WEB项目看 ...
- ISO中运行时简单使用及KVC补充
一.运行时简单使用 1.包含头文件<objc/message.h> 2.给对象发送消息的方法:objc_msgSend(id, SEL, ....) * 第1个参数是对象 * 第2个参数是 ...
- 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld
<深入理解OSGi:Equinox原理.应用与最佳实践>笔记_1_运行最简单的bundlehelloworld 买了周大大的OSGI的书看 先前完全没有基础 就靠这本书看看学学 顺便记一些 ...
- MVC学习一:MVC简单流程
MVC学习一:MVC初次接触 1.MVC简单流程 1.1.服务器接收客户端请求后,解析URL(根据 路由表里配置的URL来分析 类名(控制器名)和方法名)根据请求的类名,创建对应的控制器类对象,并调用 ...
随机推荐
- Android MMS 之APN
APN的英文全称是Access Point Name,中文全称叫接入点,是您在通过手机上网时必须配置的一个参数,它决定了您的手机通过哪种接入方式来访问网络.用来标识GPRS的业务种类,目前分为两大类: ...
- Beta版本——项目测试
前端测试 一.测试用例(tutor_distribution_0001) 测试内容 获取下拉框的输入测试 测试代码 $("#sub-confirm").click(function ...
- JSF dataTable 添加列 动态创建数据表 列
@Named @ViewScoped public class LiveRangeService implements Serializable { private List< Map<S ...
- HDU1698Just a Hook(线段树 + 区间修改 + 求和)
题目链接 分析:1-N区间内初始都是1,然后q个询问,每个询问修改区间[a,b]的值为2或3或者1,统计最后整个区间的和 本来想刷刷手速,结果还是写了一个小时,第一个超时,因为输出的时候去每个区间查找 ...
- git如何放弃所有本地修改?
问题描述: 本地做了一些修改,我用git rebase说有冲突.我现在想把本地的请求都干掉,可能有的已经commit过了(没有push过),完全同步成远程版本,应该用什么命令? 使用命令: git r ...
- PHP无限分类分类导航LINK的代码
<?php function getCatePath($cid,&$result=array()){ include("conn.php"); $sql=" ...
- string length()
#include <set> std::set<std::string> setName; int main() { std::string strName = "世 ...
- Linux学习笔记<三>
<1>查看本机的IP地址 命令:ifconfig -a 机器的ip地址是:(inet 地址:172.16.163.57 ) <2>单独查看内存使用情况的命令:free -m 查 ...
- JavaWeb学习笔记——访问静态HTML网页
基础知识: 1.一个标准 的WEB应用,在根目录下必须有一个WEB-INF文件夹,文件夹下必须有一个WEB.xml文件. 2.classes文件夹用来存放编译的class文件. 3.lib文件夹用来存 ...
- NAT穿透解决方案介绍
最近公司要实现在各种网络环境下面的多屏互动(机顶盒.android phone.iphone及PC端)的需求:由于IP地址资源有限的原因,目前我们使用的各种终端设备都位于局域网后面也就是多台设备共享同 ...