00. 目录

01. 概述

CWinApp是一个基类,你通过它来继承Windows应用程序对象。应用程序对象为你提供了初始化应用程序(以及它的每一个实例)和运行应用程序所需的成员函数。

每个使用微软基础类库的应用程序都只能包含一个从CWinApp继承的对象。当Windows调用WinMain函数时,这个对象在其它C++全局对象都已经生成并且可用之后才被创建,WinMain函数是由微软基础类库提供的。将你的CWinApp对象定义为全局的。

当你从CWinApp继承应用程序类的时候,应重载InitInstance成员函数以创建应用程序的主窗口对象。

除了CWinApp的成员函数以外,微软基础类库还提供了以下全局函数,用于访问你的CWinApp对象以及其它全局信息:
· AfxGetInstanceHandle 获得当前应用程序实例的句柄。  
· AfxGetResourceHandle 获得应用程序资源的句柄。  
· AfxGetAppName 获得一个字符串指针,其中包含了应用程序的名字。  
另外,如果你拥有一个指向CWinApp对象的指针,可以通过m_pszExename来获得应用程序的名字。

有关CWinApp类的更多信息参见“Visual C++ 程序员指南”中的“CWinApp:应用程序类”,其中包括下面的内容:
· AppWizard生成的CWinApp派生代码  
· CWinApp在你的应用程序执行顺序中作用  
· CWinApp的缺省成员函数实现  
· CWinApp的主要可重载函数  

#include <afxwin.h>

继承关系

CObject 
 └CCmdTarget 
    └CWinThread 
       └CWinApp 

02. 数据成员

数据成员
m_pszAppName 指定了应用程序的名字  
m_hInstance 标识了应用程序的当前实例  
m_hPrevInstance 在32位应用程序中被设为NULL  
m_lpCmdLine 指向一个以null结尾的字符串,指定了应用程序的命令行  
m_nCmdShow 指定最初如何显示窗口  
m_bHelpMode 指明用户是否处于Help上下文模式(通常用SHIFT+F1激活)  
m_pActiveWnd 当一个OLE服务器是现场可激活时,它指向容器应用程序的主窗口  
m_pszExeName 应用程序的模块名字  
m_pszHelpFilePath 应用程序的帮助文件的路径  
m_pszProfileName 应用程序的.INI文件名  
m_pszRegistryKey 用于确定保存应用程序主要设置的完整的注册表键  

03. 成员方法

构造函数
CWinApp 构造一个CWinApp对象  

操作函数
LoadCursor 载入光标资源  
LoadStandardCursor 载入WINDOWS.H中IDC_常量所指定的Windows预定义光标  
LoadOEMCursor 载入WINDOWS.H中OCR_常量所指定的WindowsOEM预定义光标  
LoadIcon 载入图标资源  
LoadStandardIcon 载入WINDOWS.H中IDI_常量所指定的Windows预定义图标  
LoadOEMIcon 载入WINDOWS.H中OIC_常量所指定的WindowsOEM预定义图标  
RunAutomated 检查应用程序的命令行是否指定/Automation选项。已不用。
             应当在调用ParseCommandLine之后使用CCommandLineInfo::m_bRunEmbedded中的值  
RunEmbedded 检查应用程序的命令行是否指定/Embedding选项。已不用。
			应当在调用ParseCommandLine之后使用CCommandLineInfo::m_bRunEmbedded中的值  
ParseCommandLine 解析命令行中的每个参数和标志  
ProcessShellCommand 处理命令行参数和标志  
GetProfileInt 从应用程序的.INI文件的一个入口中获取一个整数  
WriteProfileInt 将一个整数写到应用程序的.INI文件的入口  
GetProfileString 从应用程序的.INI文件的一个入口中获取一个字符串  
WriteProfileString 将一个字符串写到应用程序的.INI文件的入口  
AddDocTemplate 将一个文档模板加到应用程序的可用文档模板列表中  
GetFirstDocTemplatePosition 获取第一个文档模板的位置  
GetNextDocTemplate 获得文档模板的位置。可以递归调用  
OpenDocumentFile 由框架调用,用以从文件打开一个文档  
AddToRecentFileList 将一个文件名加入最近使用(MRU)的文件列表  
SelectPrinter 选择先前由用户在打印对话框中指定的打印机  
CreatePrinterDC 创建一个打印机设备环境  
GetPrinterDeviceDefaults 获得缺省的打印机设备  

可重载函数
InitInstance 可被重载以执行Windows的实例初始化,比如创建窗口对象  
Run 运行缺省的消息循环。可被重载以定制消息循环  
OnIdle 可被重载以执行应用程序指定的空闲时处理  
ExitInstance 可被重载以在应用程序结束时执行清除操作  
HideApplication 在关闭所有的文档之前隐藏应用程序  
CloseAllDocuments 关闭所有打开的文档  
PreTranslateMessage 在消息被分派到Windows函数::TranslateMessage和::DispatchMessage之前过滤消息  
SaveAllModified 提示用户保存所有改变了的文档  
DoMessageBox 为应用程序实现AfxMessageBoxProcessMessageFilter在消息到达应用程序之前截取特定的消息  
ProcessWndProcException 截取应用程序的消息和命令处理函数抛出的未被处理的异常  
DoWaitCursor 打开或关闭等待光标  
OnDDECommand 框架调用这个函数以响应动态数据交换(DDE)执行命令  
WinHelp 调用Windows的WinHelp函数  

初始化函数
LoadStdProfileSettings 载入标准的.INT文件设置并允许MRU文件列表特性  
SetDialogBkColor 设置对话框和消息框的缺省背景颜色  
SetRegistryKey 使应用程序的设置保存在注册表中,而不是.INI文件中  
EnableShellOpen 允许用户通过Windows的文件管理器打开数据文件  
RegisterShellFileTypes 在Windows的文件管理器中注册所有的应用程序文档类型  
Enable3dControls 使控件具有三维外观  
Enable3dControlsStatic 使控件具有三维外观  

04. 命令处理

命令处理
OnFileNew 实现ID_FILE_NEW命令  
OnFileOpen 实现ID_FILE_NEW命令  
OnFilePrintSetup 实现ID_FILE_PRINT_SETUP命令  
OnContextHelp 处理应用程序内的SHIFT+F1命令  
OnHelp 处理应用程序内的F1帮助命令(使用当前的上下文)  
OnHelpIndex 处理ID_HELP_INDEX命令,提供缺省的帮助主题  
OnHelpFinder 处理ID_HELP_FINDER和ID_DEFAULT_HELP命令  
OnHelpUsing 处理ID_HELP_USING命令  

05. 附录

5.1 官方参考文档

网址:https://docs.microsoft.com/en-us/cpp/mfc/reference/cwinapp-class?view=msvc-160