MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(02)

时间:2014-03-31 12:17:54   收藏:0   阅读:388

1.3.1 应用程序对象

MFC应用程序的核心就是基于CWinApp类的应用程序对象,CWinApp提供了消息循环来检索消息并将消息调度给应用程序的窗口。当包含头文件<afxwin.h>,可以将CWinApp以及其它MFC类引入程序。一个MFC应用程序有且只有一个应用程序对象,此对象必须声明为全局范围内有效,以便在程序的开始即被实例化。

应用程序类被命名为CMyApp,其实例化为:

bubuko.com,布布扣
bubuko.com,布布扣
1 CMyApp myapp;
CMyApp
bubuko.com,布布扣

CMyApp继承CWinApp,且没有声明任何数据成员,只是覆盖了一个从CWinApp类中继承来的函数InitInstance,InitInstance在应用程序创建之后、窗口创建之前被调用。事实上,最小的MFC应用程序也必须从CWinApp派生出一个类并覆盖CWinApp::InitInstance创建一个窗口

InitInstance

InitInstance为虚函数,默认操作仅包含一个返回值,其目的是为应用程序提供一个自身初始化的机会,InitInstance是执行程序每次开始时都需要进行初始化工作的最好地方。例如本例程的初始化如下:

bubuko.com,布布扣
bubuko.com,布布扣
 1 BOOL CMyApp::InitInstance()
 2 
 3 {
 4          m_pMainWnd = new CMainWindow;
 5 
 6          m_pMainWnd->ShowWindow(m_nCmdShow);
 7 
 8          m_pMainWnd->UpdateWindow();
 9 
10 
11          return  TRUE;
12 }
CMyApp::InitInstance
bubuko.com,布布扣

构造一个CMainWindow(CFrameWndàCMainWindow)对象,并将其地址复制到应用程序对象的m_pMainWnd数据成员中。在窗口创建之后,InitInstance通过CMainWindow指针调用ShowWindow和UpdateWindow来显示该窗口。ShowWindow和UpdateWindow是所有窗口对象共用的CWnd的成员函数。

ShowWindow

bubuko.com,布布扣
bubuko.com,布布扣
1 BOOL ShowWindow( int nCmdShow )
ShowWindow
bubuko.com,布布扣

如果窗口原来可见,则返回非零值;如果CWnd原来是隐藏的,则返回0

根据Windows程序设计协议,应用程序将存储在应用程序对象的m_nCmdShow的变量传递给WinMain的nCmdShow参数,nCmdShow值通常为SW_SHOWNORMAL。

UpdateWindow

UpdateWindow立即重新绘制窗口来完成ShowWindow启动的作业,工作完成后,InitInstance返回TRUE以便应用程序继续运行。

其它CWinApp可覆盖函数

我们现在知道InitInstance是能够被覆盖的CWinApp成员函数之一,可以通过它来定义应用程序对象的操作,下面我们查看一下CWinApp有多少可以被覆盖的成员函数,如下图:

bubuko.com,布布扣

即使是被定义成可覆盖函数,但是诸如WinHelp和ProcessWndProException这样的函数。例如:我使用ExitInstance在应用程序终止后清屏,如果使用InitInstance分配了内存或其它资源,ExitInstance将是释放资源的绝佳的地方。ExitInstance默认操作是做一些框架结果要求的清除事务,如果覆盖了它就必须确保要调用基类版本。

MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(02),布布扣,bubuko.com

原文:http://www.cnblogs.com/ultrasound/p/3633777.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!