MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(02)
1.3.1 应用程序对象
MFC应用程序的核心就是基于CWinApp类的应用程序对象,CWinApp提供了消息循环来检索消息并将消息调度给应用程序的窗口。当包含头文件<afxwin.h>,可以将CWinApp以及其它MFC类引入程序。一个MFC应用程序有且只有一个应用程序对象,此对象必须声明为全局范围内有效,以便在程序的开始即被实例化。
应用程序类被命名为CMyApp,其实例化为:
CMyApp myapp;
CMyApp
CMyApp继承CWinApp,且没有声明任何数据成员,只是覆盖了一个从CWinApp类中继承来的函数InitInstance,InitInstance在应用程序创建之后、窗口创建之前被调用。事实上,最小的MFC应用程序也必须从CWinApp派生出一个类并覆盖CWinApp::InitInstance创建一个窗口。
InitInstance
InitInstance为虚函数,默认操作仅包含一个返回值,其目的是为应用程序提供一个自身初始化的机会,InitInstance是执行程序每次开始时都需要进行初始化工作的最好地方。例如本例程的初始化如下:
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
CMyApp::InitInstance
构造一个CMainWindow(CFrameWndàCMainWindow)对象,并将其地址复制到应用程序对象的m_pMainWnd数据成员中。在窗口创建之后,InitInstance通过CMainWindow指针调用ShowWindow和UpdateWindow来显示该窗口。ShowWindow和UpdateWindow是所有窗口对象共用的CWnd的成员函数。
ShowWindow
BOOL ShowWindow( int nCmdShow )
ShowWindow
如果窗口原来可见,则返回非零值;如果CWnd原来是隐藏的,则返回0。
根据Windows程序设计协议,应用程序将存储在应用程序对象的m_nCmdShow的变量传递给WinMain的nCmdShow参数,nCmdShow值通常为SW_SHOWNORMAL。
UpdateWindow
UpdateWindow立即重新绘制窗口来完成ShowWindow启动的作业,工作完成后,InitInstance返回TRUE以便应用程序继续运行。
其它CWinApp可覆盖函数
我们现在知道InitInstance是能够被覆盖的CWinApp成员函数之一,可以通过它来定义应用程序对象的操作,下面我们查看一下CWinApp有多少可以被覆盖的成员函数,如下图:

即使是被定义成可覆盖函数,但是诸如WinHelp和ProcessWndProException这样的函数。例如:我使用ExitInstance在应用程序终止后清屏,如果使用InitInstance分配了内存或其它资源,ExitInstance将是释放资源的绝佳的地方。ExitInstance默认操作是做一些框架结果要求的清除事务,如果覆盖了它就必须确保要调用基类版本。
MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(02)的更多相关文章
- MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(03)
1.3.2 MFC如何使用应用程序对象 MFC程序没有main函数,没有WinMain函数,到底是什么启动了程序的运行? 一个MFC提供的源代码中(Winmain.cpp)包含了一个AfxWinMai ...
- 我的第一个MFC的ArcGIS Engine程序
原文 http://blog.csdn.net/zzahkj/article/details/9003518 (第一版,以VC++6.0+AE9.3为例) 首次,学习MFC,写个笔记,MFC还是挺好学 ...
- MFC通过ODBC连接mysql(使用VS2012编写MFC)
原创文章,转载请注明原文:MFC通过ODBC连接mysql(使用VS2012编写MFC) By Lucio.Yang 1.ODBC连接mysql 首先ODBC是什么呢? 开放数据库互连(Open Da ...
- visual2017专业版MFC编程环境搭建及第一个MFC程序的创建
1.MFC介绍及环境搭建 MFC全程为Microsoft Foundation class Library,即微软的基本类库,MFC实际上是一个庞大的文件库,它由指向文件和源文件组成. 首先,打开vi ...
- MFC (如何通过点击botton打开一个文件夹/文件)
1.建一个MFC的工程,类型为基于对话框.在工具箱里拖进去一个button按键,如下图. 2.双击button1按键就可以进入到点击button1后要执行操作的代码,编写如下代码实现网页/文件夹或者文 ...
- 第一个c程序和vs2017 在打开MFC rc文件时找不到rcdll.dl
第一个c程序 #include<stdio.h> int main() { ; ; printf_s("请输入两个数字:"); scanf_s("%d,%d& ...
- 第一个MFC实例:计算圆周长和圆面积
一.基于Microsoft MFC的编程方法 MFC是微软基础类库(Microsoft Foundation Class)的缩写.与API不同,MFC不是Windows操作系统的组成部分,而是微软公司 ...
- MFC小程序02————— 不规则窗体小应用程序
什么不说了.先上程序截图: 执行结果是有一棵有星星在闪烁的圣诞树.还会循环播放背景音乐. 之前也是在网上看到类似的一个程序.然后自己近期也在学MFC.所以就模仿着写了一个, 当中使用的是GDI+来显示 ...
- fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC
出现如下错误: fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires ...
随机推荐
- iStylePDF安全电子文档解决方案之电子合同在线订立
交易是商业世界不可或缺的一部分,而签名是交易的凭证.可是,尽管互联网和IT技术已经很发达,但每逢遇到签名,还是得用最原始的方法——握笔写字.与如今走到哪都能听到“互联网+”相比有点不合潮流,通过电子签 ...
- 在web.xml注册applicationContext.xml配置文件
概要: Spring配置文件是集成了Spring框架的项目的核心,引擎的开始是:容器先是加载web.xml,接着是applicationContext.xml在web.xml里的注册.以下我们将介绍a ...
- 哈希表(Hash Table)
参考: Hash table - Wiki Hash table_百度百科 从头到尾彻底解析Hash表算法 谈谈 Hash Table 我们身边的哈希,最常见的就是perl和python里面的字典了, ...
- OneSQL安装
下载 www.onexsoft.com -> 下载 -> OneSQL 安装 yum install onesql-<version>.rpm 配置 进入安装目录 cd /us ...
- 有关sublime text的插件安装
.sumblime text 中的package control 插件包控件的安装步骤一: Ctrl+` 调出console 粘贴代码: import urllib2,os; pf='Pa ...
- GoF--外观设计模式
设计模式--外观模式Facade(结构型): 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...
- css3 rem的用法
rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...
- hg0088新2网址
封装通俗的说,就是我有一些秘密不想让人知道,就通过私有化变量和私有化方法,这样外界就访问不到了.hg0088新2网址然后如果你有一些很想让大家知道的东西,你就可以通过this创建的属性看作是对象共有属 ...
- linux系统文件说明
linux系统文件说明 bin 系统命令目录 dev 设备目录 home 用户的家(每个系统用户在home下都有一个自己家) root超级用户在根目录下 lib 系统库目录.so动态库文件 media ...
- js多行省略
$(function (){ // var $introduce = $(".c-introduce").html(); // $new_introduce = $introduc ...