MFC教程(5)-- MFC对象的创建(1)
2010-03-25 20:33:46 来源:WEB开发网MFC对象的创建过程
应用程序使用MFC的接口是把一些自己的特殊处理填入MFC框架,这些处理或者在应用程序启动和初始化的时候被调用,或者在程序启动之后和用户交互的过程中被调用,或者在程序退出和作清理工作的时候被调用。这三个阶段中,和用户交互阶段是各个程序自己的事情,自然都不一样,但是程序的启动和退出两个阶段是MFC框架所实现的,是MFC框架的一部分,各个程序都遵循同样的步骤和规则。显然,清楚MFC框架对这两个阶段的处理是很有必要的,它可以帮助深入理解MFC框架,更好地使用MFC框架,更有效地实现应用程序特定的处理。
MFC程序启动和初始化过程就是创建MFC对象和Windows对象、建立各种对象之间的关系、把窗口显示在屏幕上的过程,退出过程就是关闭窗口、销毁所创建的Windows对象和MFC对象的过程。所以,下面要讨论几种常用MFC对象的结构,它们是构成一个文档-视模式应用程序的重要部件。
应用程序中典型对象的结构
本节将主要分析应用程序对象、文档对象、文档模板等的数据结构。通过考察类的结构,特别是成员变量结构,弄清它的功能、目的以及和其他类的关系;另外,在后续有关分析中必定会提到这些成员变量,这里先作个说明,到时也不会显得突兀。
下面几节以表格的形式来描述各个类的成员变量。表格中,第一列打钩的表示是MFC类库文档有说明的;没打钩的在文档中没有说明,如果是public,则可以直接访问,但随着MFC版本的变化,以后MFC可能不支持这些成员;第二列是访问属性;第三列是成员变量名称;第四列是成员变量的数据类型;第五列是对成员变量的功能、用途的简要描述。
应用程序类的成员变量
应用程序对象的数据成员表由两部分组成,第一部分是CWinThread的成员变量,如表5-6所示,CWinApp继承了CWinThread的数据成员。第二部分是CWinApp自己定义的成员变量,如表5-7所示。
表5-6 CwinThread的成员变量
访问限制 |
变量名称 |
类型 |
解释 |
|
√ |
public |
m_bAutoDelete |
BOOL |
指定线程结束时是否销毁线程对象本身 |
√ |
public |
m_hThread |
HANDLE |
当前线程的句柄 |
√ |
public |
m_nThreadID |
UINT |
当前线程的ID |
√ |
public |
m_pMainWnd |
CWnd* |
指向应用程序主窗口的指针 |
√ |
public |
m_pActiveWnd |
CWnd* |
当OLE SERVER就地激活时指向客户程序主窗口的指针 |
public |
m_msgCur |
MSG |
当前消息(MSG结构) |
|
public |
m_pThreadParams |
LPVOID |
传递给线程开始函数的参数 |
|
public |
m_pfnThreadProc |
函数指针1 |
线程开始函数,AFX_THREADPROC类型 |
|
public |
m_lpfnOleTermOrFreeLib |
函数指针2 |
OLE用途,void (AFXAPI * fn)(BOOL,BOOL) |
|
public |
m_pMessageFilter |
指针 |
OLE消息过滤,指向COleMessageFilter对象 |
|
protected |
m_ptCursorLast |
CPoint |
最新鼠标位置 |
|
protected |
m_nMsgLast |
UINT |
消息队列中最新接收到的消息 |
表5-7 CWinApp的成员变量
访问限制 |
变量名称 |
类型 |
解释 |
|
√ |
public |
m_pszAppName |
LPCTSTR |
应用程序名称 |
√ |
public |
m_hInstance |
HINSTANCE |
标志应用程序当前实例句柄 |
√ |
public |
m_hPrevInstance |
HINSTANCE |
32位程序设为空 |
√ |
public |
m_lpCmdLine |
LPTSTR |
指向应用程序的命令行字符串 |
√ |
public |
m_nCmdShow |
int |
指定窗口开始的显示方式 |
√ |
public |
m_bHelpMode |
BOOL |
标识用户是否在上下文帮助模式 |
√ |
public |
m_pszExeName |
LPCTSTR |
应用程序的模块名 |
√ |
public |
m_pszHelpFilePath |
LPCTSTR |
应用程序的帮助文件名,缺省时同模块名 |
√ |
public |
m_pszProfileName |
LPCTSTR |
应用程序的INI文件名,缺省时同应用程序名 |
√ |
public |
m_pszRegistryKey |
LPCTSTR |
Register入口,如果不指定,使用INI文件。 |
public |
m_pDocManager; |
CDocManager * |
指向一个文档模板管理器 |
|
protected |
m_hDevMode |
HGLOBAL |
打印设备模式 |
|
protected |
m_hDevNames |
HGLOBAL |
打印设备名称 |
|
protected |
m_dwPromptContext |
DWORD |
被MESSAGE BOX覆盖的帮助上下文 |
|
protected |
m_nWaitCursorCount |
int |
等待光标计数 |
|
protected |
m_hcurWaitCursorRestore |
HCURSOR |
保存的光标,在等待光标之后恢复 |
|
protected |
m_pRecentFileList |
指针 |
指向CRecentFileList对象,最近打开的文件列表 |
|
public |
m_atomApp |
ATOM |
DDE用途 |
|
public |
m_atomSystemTopic |
m_atomApp |
DDE用途 |
|
public |
m_nNumPreviewPages |
UINT |
缺省被打印的页面 |
|
public |
m_nSafetyPoolSize |
size_t |
理想尺寸 |
|
public |
m_lpfnDaoTerm |
函数指针 |
DAO初始化设置时使用 |
更多精彩
赞助商链接