CWinAppEx
类
CWinAppEx
处理应用程序状态,将此状态保存到注册表,从注册表加载此状态,初始化应用程序管理器,并将链接提供到同样的应用程序管理器。
有关更多详细信息,请参阅 Visual Studio 安装的 mfc
文件夹中的源代码。 例如 %ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc
。
语法
class CWinAppEx : public CWinApp
成员
公共构造函数
名称 | 描述 |
---|---|
CWinAppEx::CWinAppEx |
构造 CWinAppEx 对象。 |
公共方法
受保护方法
名称 | 描述 |
---|---|
CWinAppEx::LoadCustomState |
加载应用程序状态时由框架调用。 |
CWinAppEx::LoadWindowPlacement |
框架在从注册表加载应用程序的大小和位置时调用。 加载的数据包括应用程序上次关闭时主框架的大小和位置。 |
CWinAppEx::OnClosingMainFrame |
当主框架窗口正在处理 WM_CLOSE 时由框架调用。 |
CWinAppEx::PreLoadState |
恰好在加载应用程序状态之前由框架调用。 |
CWinAppEx::PreSaveState |
恰好在保存应用程序状态之前由框架调用。 |
CWinAppEx::ReloadWindowPlacement |
从注册表重新加载提供窗口的大小和位置 |
CWinAppEx::SaveCustomState |
框架在将应用程序状态写入注册表后调用。 |
CWinAppEx::StoreWindowPlacement |
由框架调用以便将主框架的大小和位置写入注册表。 |
数据成员
名称 | 描述 |
---|---|
CWinAppEx::m_bForceImageReset |
指定框架在加载包含工具栏的框架窗口时是否重置所有工具栏图像。 |
备注
MFC 框架提供的大部分功能都依赖于 CWinAppEx
类。 可以通过以下两种方式之一将 CWinAppEx
类合并到应用程序中:
在主线程中构造
CWinAppEx
类。从
CWinAppEx
派生主应用程序类。
将 CWinAppEx
合并到应用程序后,可以初始化任一应用程序管理器。 在使用应用程序管理器之前,必须调用适当的 initialize 方法进行初始化。 要获取指向特定管理器的指针,请调用关联的 get 方法。 CWinAppEx
类管理以下应用程序管理器:CMouseManager
类、CContextMenuManager
类、CKeyboardManager
类、CUserToolsManager
类和 CMenuTearOffManager
类。
继承层次结构
要求
标头:afxwinappex.h
CWinAppEx::CleanState
从 Windows 注册表中移除应用程序的所有相关信息。
virtual BOOL CleanState(LPCTSTR lpszSectionName=NULL);
参数
lpszSectionName
[in] 包含注册表项路径的字符串。
返回值
如果此方法成功,则返回非零值;否则返回 0。
备注
此方法清除注册表特定部分中的应用程序数据。 可以使用参数 lpszSectionName
指定要清除的部分。 如果 lpszSectionName
是 NULL
,此方法将使用存储在 CWinAppEx
对象中的默认注册表路径。 要获取默认注册表路径,请使用 CWinAppEx::GetRegistryBas。
CWinAppEx::CWinAppEx
构造 CWinAppEx
对象。
CWinAppEx(BOOL bResourceSmartUpdate = FALSE);
参数
bResourceSmartUpdate
[in] 布尔参数,用于指定工作区对象是否应检测和处理资源更新。
备注
CWinAppEx
类具有初始化方法,提供用于将应用程序信息保存和加载到注册表的功能,并且控制全局应用程序设置。 通过它,你还可使用全局管理器,例如 CKeyboardManager
类和 CUserToolsManager
类。 每个应用程序只能有一个 CWinAppEx
类实例。
CWinAppEx::EnableLoadWindowPlacement
指定应用程序是否将从注册表加载主框架窗口的初始大小和位置。
void EnableLoadWindowPlacement(BOOL bEnable = TRUE);
参数
bEnable
[in] 指定应用程序是否从注册表加载主框架窗口的初始大小和位置。
备注
默认情况下,主框架的大小和位置与其他应用程序设置一起从注册表加载。 在 CWinAppEx::LoadState
期间会出现此情况。 如果不想从注册表加载初始窗口位置,请在将 bEnable
设置为 FALSE
的情况下调用此方法。
CWinAppEx::EnableTearOffMenus
创建并初始化一个 CMenuTearOffManager
对象。
BOOL EnableTearOffMenus(
LPCTSTR lpszRegEntry,
const UINT uiCmdFirst,
const UINT uiCmdLast);
参数
lpszRegEntry
[in] 包含注册表项路径的字符串。 应用程序使用此注册表项来存储可拖曳菜单的信息。
uiCmdFirst
[in] 第一个可拖曳菜单 ID。
uiCmdLast
[in] 最后一个可拖曳菜单 ID。
返回值
如果已成功创建并初始化 CMenuTearOffManager
,则返回 TRUE
;如果发生错误或 CMenuTearOffManager
已存在,则返回 FALSE
。
备注
使用此函数在应用程序中启用可拖曳菜单。 应从 InitInstance
调用此函数。
CWinAppEx::EnableUserTools
允许用户创建自定义菜单命令,以减少应用程序中的击键。 此方法创建 CUserToolsManager
对象。
BOOL EnableUserTools(
const UINT uiCmdToolsDummy,
const UINT uiCmdFirst,
const UINT uiCmdLast,
CRuntimeClass* pToolRTC = RUNTIME_CLASS(CUserTool),
UINT uArgMenuID = 0,
UINT uInitDirMenuID = 0);
参数
uiCmdToolsDummy
[in] 框架用作用户工具菜单命令 ID 的占位符的无符号整数。
uiCmdFirst
[in] 第一个用户工具命令的命令 ID。
uiCmdLast
[in] 最后一个用户工具命令的命令 ID。
pToolRTC
[in] CUserToolsManager
对象用于创建新用户工具的类。
uArgMenuID
[in] 参数菜单 ID。
uInitDirMenuID
[in] 初始工具目录的菜单 ID。
返回值
如果此方法创建并初始化 CUserToolsManager
对象,则返回 TRUE
;如果此方法失败或 CUserToolsManager
对象已存在,则返回 FALSE
。
备注
启用用户定义的工具时,框架会自动支持可在自定义期间进行扩展的动态菜单。 框架将每个新项与外部命令相关联。 当用户从“工具”菜单中选择相应的项时,框架将调用这些命令。
每次用户添加新项时,框架都会创建新对象。 新对象的类类型由 pToolRTC
定义。 pToolRTC
类类型必须派生自 CUserTool
类。
若要详细了解用户工具并学习如何将其合并到应用程序中,请参阅用户定义的工具。
CWinAppEx::ExitInstance
virtual int ExitInstance();
返回值
备注
CWinAppEx::GetBinary
从指定的注册表项读取二进制数据。
BOOL GetBinary(
LPCTSTR lpszEntry,
LPBYTE* ppData,
UINT* pBytes);
参数
lpszEntry
[in] 包含注册表键名称的字符串。
ppData
[out] 指向方法用二进制数据填充的缓冲区的指针。
pBytes
[out] 指向该方法用于写入读取字节数的无符号整数的指针。
返回值
如果成功,则返回 TRUE
;否则返回 FALSE
。
备注
此方法读取写入注册表的二进制数据。 要将数据写入注册表,请使用方法 CWinAppEx::WriteBinary
和 CWinAppEx::WriteSectionBinary
。
lpszEntry
参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetContextMenuManager
返回指向全局 CContextMenuManager
对象的指针。
CContextMenuManager* GetContextMenuManager();
返回值
指向全局 CContextMenuManager
对象的指针。
备注
如果未初始化 CContextMenuManager
对象,则此函数在返回指针之前调用 CWinAppEx::InitContextMenuManager
。
CWinAppEx::GetDataVersion
int GetDataVersion() const;
返回值
备注
CWinAppEx::GetDataVersionMajor
调用 CWinAppEx::SaveState
时返回在 Windows 注册表中保存的应用程序的主版本。
int GetDataVersionMajor() const;
返回值
返回包含主版本号的整数值。
CWinAppEx::GetDataVersionMinor
调用 CWinAppEx::SaveState
时返回在 Windows 注册表中保存的应用程序的次要版本。
int GetDataVersionMinor() const;
返回值
返回包含次要版本号的整数值。
CWinAppEx::GetInt
从指定的注册表项读取整数数据。
int GetInt(
LPCTSTR lpszEntry,
int nDefault = 0);
参数
lpszEntry
[in] 包含注册表项名称的字符串。
nDefault
[in] 指定的注册表项不存在时该方法返回的默认值。
返回值
如果此方法成功,返回注册表数据;否则返回 nDefault
。
备注
此方法从注册表读取整数数据。 如果没有与 lpszEntry
指示的注册表项关联的整数数据,此方法返回 nDefault
。 要将数据写入注册表,请使用方法 CWinAppEx::WriteSectionInt
和 CWinAppEx::WriteInt
。
lpszEntry
参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetKeyboardManager
返回指向全局 CKeyboardManager
对象的指针。
CKeyboardManager* GetKeyboardManager();
返回值
指向全局 CKeyboardManager
对象的指针。
备注
如果未初始化键盘管理器,则此函数在返回指针之前调用 CWinAppEx::InitKeyboardManager
。
CWinAppEx::GetMouseManager
返回指向全局 CMouseManager
对象的指针。
CMouseManager* GetMouseManager();
返回值
指向全局 CMouseManager
对象的指针。
注解
如果未初始化鼠标管理器,则此函数在返回指针之前调用 CWinAppEx::InitMouseManager
。
CWinAppEx::GetObject
从注册表读取 CObject
派生数据。
BOOL GetObject(
LPCTSTR lpszEntry,
CObject& obj);
参数
lpszEntry
[in] 包含注册表项相对路径的字符串。
obj
[out] 对 CObject
的引用。 该方法使用此引用来存储注册表数据。
返回值
如果此方法成功,则返回非零值;否则返回 0。
备注
此方法从注册表中读取派生自 CObject
的数据。 要将 CObject
数据写入注册表,请使用 CWinAppEx::WriteObject
或 CWinAppEx::WriteSectionObject
。
lpszEntry
参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetRegistryBase
检索应用程序的默认注册表路径。
LPCTSTR GetRegistryBase();
返回值
返回包含默认注册表位置路径的字符串。
备注
所有访问注册表的 CWinAppEx
类方法都从默认位置开始。 使用此方法检索默认注册表位置的路径。 使用 CWinAppEx::SetRegistryBase
更改默认注册表位置。
CWinAppEx::GetRegSectionPath
创建并返回注册表项的绝对路径。
CString GetRegSectionPath(LPCTSTR szSectionAdd = _T(""));
参数
szSectionAdd
[in] 包含注册表键相对路径的字符串。
返回值
包含注册表项绝对路径的 CString
。
备注
此方法通过将 szSectionAdd
中的相对路径追加到应用程序的默认注册表位置来定义注册表项的绝对路径。 要获取默认注册表项,请使用方法 CWinAppEx::GetRegistryBase
。
CWinAppEx::GetSectionBinary
从注册表读取二进制数据。
BOOL GetSectionBinary(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
LPBYTE* ppData,
UINT* pBytes);
参数
lpszSubSection
[in] 包含注册表键相对路径的字符串。
lpszEntry
[in] 包含要读取的值的字符串。
ppData
[out] 指向方法存储数据的缓冲区的指针。
pBytes
[out] 指向无符号整数的指针。 该方法将 ppData
的大小写入此参数。
返回值
如果成功,则返回 TRUE
;否则返回 FALSE
。
备注
此方法使用方法 CWinAppEx::WriteBinary
和 CWinAppEx::WriteSectionBinary
读取写入注册表的二进制数据。
lpszSubSection
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetSectionInt
从注册表读取整数数据。
int GetSectionInt(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
int nDefault = 0);
参数
lpszSubSection
[in] 包含注册表键相对路径的字符串。
lpszEntry
[in] 包含要读取的值的字符串。
nDefault
[in] 指定的值不存在时返回的默认值。
返回值
返回存储在指定注册表值中的整数数据;如果此数据不存在,则返回 nDefault
。
注解
使用方法 CWinAppEx::WriteInt
和 CWinAppEx::WriteSectionInt
将整数数据写入注册表。
lpszSubSection
参数不是注册表项的绝对路径。 它是添加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetSectionObject
从注册表读取 CObject
注册表数据。
BOOL GetSectionObject(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
CObject& obj);
参数
lpszSubSection
[in] 包含注册表键相对路径的字符串。
lpszEntry
[in] 包含要读取的值的字符串。
obj
[out] 对 CObject
的引用。 该方法使用 CObject
来存储注册表数据。
返回值
如果成功,则不为 0;否则为 0。
备注
此方法从注册表读取数据。 读取的数据是 CObject
数据,或派生自 CObject
的类的数据。 要将 CObject
数据写入注册表,请使用 CWinAppEx::WriteObject
或 CWinAppEx::WriteSectionObject
。
lpszSubSection
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetSectionString
从注册表读取字符串数据。
CString GetSectionString(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
LPCTSTR lpszDefault = _T(""));
参数
lpszSubSection
[in] 包含注册表键相对路径的字符串。
lpszEntry
[in] 包含要读取的值的字符串。
lpszDefault
[in] 指定的值不存在时返回的默认值。
返回值
如果数据存在,则返回存储在指定注册表值中的字符串数据;否则返回 lpszDefault
。
注解
此方法读取写入注册表的字符串数据。 使用 CWinAppEx::WriteString
和 CWinAppEx::WriteSectionString
将字符串数据写入注册表。
lpszSubSection
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetShellManager
返回指向全局 CShellManager
对象的指针。
CShellManager* GetShellManager();
返回值
指向全局 CShellManager
对象的指针。
备注
如果未初始化 CShellManager
对象,则此函数在返回指针之前调用 CWinAppEx::InitShellManager
。
CWinAppEx::GetString
从指定的注册表项读取字符串数据。
CString GetString(
LPCTSTR lpszEntry,
LPCTSTR lpzDefault= _T(""));
参数
lpszEntry
[in] 包含注册表项名称的字符串
lpzDefault
[in] 指定的注册表项不存在时该方法返回的默认值。
返回值
如果成功,则返回存储在注册表中的字符串数据;否则返回 lpszDefault
。
注解
此方法读取写入注册表的字符串数据。 要将数据写入注册表,请使用方法 CWinAppEx::WriteString
或 CWinAppEx::WriteSectionString
。
lpszEntry
参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::GetTooltipManager
返回指向全局 CTooltipManager
对象的指针。
CTooltipManager* GetTooltipManager();
返回值
指向全局 CTooltipManager
对象的指针。
备注
如果未初始化 CTooltipManager
对象,则此函数在返回指针之前调用 CWinAppEx::InitTooltipManager
。
CWinAppEx::GetUserToolsManager
返回指向全局 CUserToolsManager
对象的指针。
CUserToolsManager* GetUserToolsManager();
返回值
返回指向全局 CUserToolsManager
对象的指针;如果没有为应用程序启用用户工具管理,则返回 NULL
。
注解
在检索指向 CUserToolsManager
对象的指针之前,必须调用 CWinAppEx::EnableUserTools
才能初始化管理器。
CWinAppEx::InitContextMenuManager
初始化 CContextMenuManager
对象。
BOOL InitContextMenuManager();
返回值
如果此方法创建 CContextMenuManager
对象,则返回非零值;如果 CContextMenuManager
对象已存在,则返回 0。
备注
如果调用 CWinAppEx::GetContextMenuManager
,该方法的默认实现将调用 InitContextMenuManager
。
如果应用程序已有上下文菜单管理器,并且你调用 InitContextMenuManager
,则应用程序将出现 ASSERT
失败。 因此,如果直接创建 CContextMenuManager
对象,则不应调用 InitContextMenuManager
。 如果不使用自定义 CContextMenuManager
,则应使用 GetContextMenuManager
创建 CContextMenuManager
对象。
CWinAppEx::InitKeyboardManager
初始化 CKeyboardManager
对象。
BOOL InitKeyboardManager();
返回值
如果此方法创建 CKeyboardManager
对象,则返回非零值;如果 CKeyboardManager
对象已存在,则返回 0。
备注
如果调用 CWinAppEx::GetKeyboardManager
,该方法的默认实现将调用 InitKeyboardManager
。
如果应用程序已有键盘管理器,并且你调用 InitKeyboardManager
,则应用程序将出现 ASSERT
失败。 因此,如果直接创建 CKeyboardManager
对象,则不应调用 InitKeyboardManager
。 如果不使用自定义 CKeyboardManager
,则应使用 GetKeyboardManager
创建 CKeyboardManager
对象。
CWinAppEx::InitMouseManager
初始化 CMouseManager
对象。
BOOL InitMouseManager();
返回值
如果此方法创建 CMouseManager
对象,则返回非零值;如果 CMouseManager
对象已存在,则返回 0。
备注
如果调用 CWinAppEx::GetMouseManager
,该方法的默认实现将调用 InitMouseManager
。
如果应用程序已有鼠标管理器,并且你调用 InitMouseManager
,则应用程序将出现 ASSERT
失败。 因此,如果直接创建 CMouseManager
对象,则不应调用 InitMouseManager
。 如果不使用自定义 CMouseManager
,则应使用 GetMouseManager
创建 CMouseManager
对象。
CWinAppEx::InitShellManager
初始化 CShellManager
对象。
BOOL InitShellManager();
返回值
如果此方法创建 CShellManager
对象,则返回非零值;如果 CShellManager
对象已存在,则返回 0。
备注
如果调用 CWinAppEx::GetShellManager
,该方法的默认实现将调用 InitShellManager
。
如果应用程序已有 shell 管理器,并且你调用 InitShellManager
,则应用程序会引发 ASSERT
失败。 因此,如果直接创建 CShellManager
对象,请勿调用 InitShellManager
。 如果不使用自定义 CShellManager
,请使用 GetShellManager
创建 CShellManager
对象。
CWinAppEx::InitTooltipManager
初始化 CTooltipManager
对象。
BOOL InitTooltipManager();
返回值
如果此方法创建 CTooltipManager
对象,则返回非零值;如果 CTooltipManager
对象已存在,则返回 0。
备注
如果调用 CWinAppEx::GetTooltipManager
,该方法的默认实现将调用 InitTooltipManager
。
如果应用程序已有工具提示管理器,并且你调用 InitTooltipManager
,则应用程序将出现 ASSERT
失败。 因此,如果直接创建 CTooltipManager
对象,则不应调用 InitTooltipManager
。 如果不使用自定义 CTooltipManager
,则应使用 GetTooltipManager
创建 CTooltipManager
对象。
CWinAppEx::IsResourceSmartUpdate
BOOL IsResourceSmartUpdate() const;
返回值
备注
CWinAppEx::IsStateExists
指示注册表中是否存在指定的键。
BOOL IsStateExists(LPCTSTR lpszSectionName);
参数
lpszSectionName
[in] 包含注册表项路径的字符串。
返回值
如果注册表中具有此键,则返回非零值;否则返回 0。
CWinAppEx::LoadCustomState
框架在从注册表加载应用程序状态后调用此方法。
virtual void LoadCustomState();
备注
如果要在应用程序从注册表加载状态后执行任何处理,请重写此方法。 默认情况下,此方法不执行任何操作。
若要从注册表加载自定义状态信息,必须先使用 CWinAppEx::SaveCustomState
保存该信息。
CWinAppEx::LoadState
从 Windows 注册表读取应用程序状态。
BOOL LoadState(
CMDIFrameWndEx* pFrame,
LPCTSTR lpszSectionName = NULL);
BOOL LoadState(
CFrameWndEx* pFrame,
LPCTSTR lpszSectionName = NULL);
BOOL LoadState(
COleIPFrameWndEx* pFrame,
LPCTSTR lpszSectionName = NULL);
virtual BOOL LoadState(
LPCTSTR lpszSectionName = NULL,
CFrameImpl* pFrameImpl = NULL);
参数
pFrame
[in] 指向框架窗口对象的指针。 该方法将注册表中的状态信息应用于此框架窗口。
lpszSectionName
[in] 包含注册表键相对路径的字符串。
pFrameImpl
[in] 一个指向 CFrameImpl
对象的指针。 该方法将注册表中的状态信息应用于此框架窗口。
返回值
如果成功,则为非零值;否则为 0。
备注
此方法加载应用程序的状态以及框架窗口的任何状态信息。 为框架窗口加载的信息应用于提供的框架窗口。 如果未提供框架窗口,则仅加载应用程序状态信息。 应用程序信息包括 CMouseManager
类、CContextMenuManager
类、CKeyboardManager
类和 CUserToolsManager
类的状态。
CFrameImpl::OnLoadFrame
的默认实现调用 LoadState
。
lpszSectionName
参数不是注册表项的绝对路径。 它是添加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::LoadWindowPlacement
在从注册表加载主框架窗口的大小和位置时由框架调用。
virtual BOOL LoadWindowPlacement(
CRect& rectNormalPosition,
int& nFlags,
int& nShowCmd);
参数
rectNormalPosition
[out] 包含主框架窗口在还原位置时的坐标的矩形。
nFlags
[out] 用于控制最小化窗口位置以及操作系统如何在最小化窗口和还原窗口之间切换的标志。
nShowCmd
[out] 指定窗口显示状态的整数。 有关可能值的详细信息,请参阅 CWnd::ShowWindow
。
返回值
如果成功,则为非零值;否则为 0。
备注
默认情况下,MFC 会在应用程序启动时自动加载主框架窗口的上一位置和状态。 若要详细了解如何将此信息存储在注册表中,请参阅 CWinAppEx::StoreWindowPlacement
。
如果要加载主框架窗口的其他相关信息,请重写此方法。
CWinAppEx::m_bForceImageReset
指定框架在重新加载包含工具栏的框架窗口时是否重置所有工具栏图像。
BOOL m_bForceImageReset;
备注
m_bForceImageReset
数据成员是一个受保护的变量。
CWinAppEx::OnAppContextHelp
当用户请求“自定义”对话框的上下文帮助时,框架会调用此方法。
virtual void OnAppContextHelp(
CWnd* pWndControl,
const DWORD dwHelpIDArray[]);
参数
pWndControl
[in] 指向用户为其调用上下文帮助的窗口对象的指针。
dwHelpIDArray[]
[in] 保留值。
注解
此方法目前保留供将来使用。 默认实现不执行任何操作,它当前没有被框架调用。
CWinAppEx::OnClosingMainFrame
当框架窗口正在处理 WM_CLOSE
时,框架调用此方法。
virtual void OnClosingMainFrame(CFrameImpl* pFrameImpl);
参数
pFrameImpl
[in] 一个指向 CFrameImpl
对象的指针。
备注
此方法的默认实现会保存 pFrameImpl
的状态。
CWinAppEx::OnViewDoubleClick
当用户双击视图中的任意位置时,调用与该视图关联的用户定义的命令。
virtual BOOL OnViewDoubleClick(
CWnd* pWnd,
int iViewId);
参数
pWnd
[in] 指向派生自 CView
类的对象的指针。
iViewId
[in] 视图 ID。
返回值
如果框架找到命令,则返回 TRUE
;否则返回 FALSE
。
注解
若要支持自定义鼠标行为,必须在处理 WM_LBUTTONDBLCLK
消息时调用此函数。 此方法将执行与 iViewId
提供的视图 ID 关联的命令。 若要详细了解自定义鼠标行为,请参阅键盘和鼠标自定义。
CWinAppEx::OnWorkspaceIdle
virtual BOOL OnWorkspaceIdle(CWnd*);
参数
[in] CWnd*
\
返回值
备注
CWinAppEx::PreLoadState
框架恰好在从注册表加载应用程序状态之前调用此方法。
virtual void PreLoadState();
注解
如果要恰好在框架加载应用程序状态之前执行任何处理,请重写此方法。
CWinAppEx::PreSaveState
框架恰好在保存应用程序状态之前调用此方法。
virtual void PreSaveState();
备注
如果要恰好在框架保存应用程序状态之前执行任何处理,请重写此方法。
CWinAppEx::ReloadWindowPlacement
从注册表重新加载窗口的大小和位置。
virtual BOOL ReloadWindowPlacement(CFrameWnd* pFrame);
参数
pFrame
[in] 指向框架窗口的指针。
返回值
如果此方法成功,则返回非零值;如果加载失败或没有要加载的数据,则返回 0。
备注
使用函数 CWinAppEx::StoreWindowPlacement
将窗口的大小和位置写入注册表。
CWinAppEx::SaveCustomState
框架在将应用程序状态保存到注册表之后调用此方法。
virtual void SaveCustomState();
备注
如果要在应用程序将状态保存到注册表之后执行任何处理,请重写此方法。 默认情况下,此方法不执行任何操作。
CWinAppEx::SaveState
将应用程序状态写入 Windows 注册表。
virtual BOOL SaveState(
LPCTSTR lpszSectionName = NULL,
CFrameImpl* pFrameImpl = NULL);
BOOL SaveState(
CMDIFrameWndEx* pFrame,
LPCTSTR lpszSectionName = NULL);
BOOL SaveState(
CFrameWndEx* pFrame,
LPCTSTR lpszSectionName = NULL);
BOOL SaveState(
COleIPFrameWndEx* pFrame,
LPCTSTR lpszSectionName = NULL);
参数
lpszSectionName
[in] 包含注册表键相对路径的字符串。
pFrameImpl
[in] 一个指向 CFrameImpl
对象的指针。 此框架会保存到 Windows 注册表。
pFrame
[in] 指向框架窗口对象的指针。 此框架会保存到 Windows 注册表。
返回值
如果成功,则返回 TRUE
;否则返回 FALSE
。
备注
此方法会保存应用程序的状态以及提供的框架窗口的任何状态信息。 如果未提供框架窗口,该方法仅保存应用程序状态。 应用程序信息包括 CMouseManager
类、CContextMenuManager
类、CKeyboardManager
类和 CUserToolsManager
类的状态。
lpszSectionName
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
CWinAppEx::SetRegistryBase
设置应用程序的默认注册表路径。
LPCTSTR SetRegistryBase(LPCTSTR lpszSectionName = NULL);
参数
lpszSectionName
[in] 包含注册表项路径的字符串。
返回值
返回包含默认注册表位置路径的字符串。
备注
所有访问注册表的 CWinAppEx
类方法都从默认位置开始。 使用此方法可更改默认注册表位置。 使用 CWinAppEx::GetRegistryBase
检索默认注册表位置。
CWinAppEx::ShowPopupMenu
显示弹出菜单。
virtual BOOL ShowPopupMenu(
UINT uiMenuResId,
const CPoint& point,
CWnd* pWnd);
参数
uiMenuResId
[in] 菜单资源 ID。
point
[in] 指定菜单在屏幕坐标中的位置的 CPoint
。
pWnd
[in] 指向包含弹出菜单的窗口的指针。
返回值
如果成功显示弹出菜单,则返回非零值;否则返回 0。
注解
此方法显示与 uiMenuResId
.关联的菜单。
若要支持弹出菜单,必须有 CContextMenuManager
对象。 如果尚未初始化 CContextMenuManager
对象,则 ShowPopupMenu
将失败。
CWinAppEx::StoreWindowPlacement
由框架调用以便将主框架窗口的大小和位置写入注册表。
virtual BOOL StoreWindowPlacement(
const CRect& rectNormalPosition,
int nFlags,
int nShowCmd);
参数
nFlags
[in] 用于控制最小化窗口位置以及操作系统如何在最小化窗口和还原窗口之间切换的标志。
nShowCmd
[in] 指定窗口显示状态的整数。 有关可能值的详细信息,请参阅 CWnd::ShowWindow
。
rectNormalPosition
[in] 包含主框架窗口在还原状态时的坐标的矩形。
返回值
如果成功,则为非零值;否则为 0。
注解
默认情况下,MFC 会在应用程序退出之前自动保存主框架窗口的位置和状态。 此信息存储在应用程序默认注册表位置的 Windows 注册表中的 WindowPlacement 键下。 有关应用程序默认注册表位置的详细信息,请参阅 CWinAppEx::GetRegistryBase
。
如果要存储有关主框架窗口的其他信息,请重写此方法。
CWinAppEx::WriteBinary
将二进制数据写入注册表。
BOOL WriteBinary(
LPCTSTR lpszEntry,
LPBYTE pData,
UINT nBytes);
参数
lpszEntry
[in] 包含注册表键名称的字符串。
pData
[in] 要存储的数据。
nBytes
[in] pData
的大小(以字节为单位)。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
备注
lpszEntry
参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
如果不存在 lpszEntry
指定的键,则此方法将创建该键。
CWinAppEx::WriteInt
将数值数据写入注册表。
BOOL WriteInt(
LPCTSTR lpszEntry,
int nValue);
参数
lpszEntry
[in] 包含注册表键名称的字符串。
nValue
[in] 要存储的数据。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
备注
lpszEntry
参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
如果不存在 lpszEntry
指定的键,则此方法将创建该键。
CWinAppEx::WriteObject
将从 CObject
类派生的数据写入注册表。
BOOL WriteObject(
LPCTSTR lpszEntry,
CObject& obj);
参数
lpszEntry
[in] 包含要设置的值的字符串。
obj
[in] 对方法将存储的 CObject
数据的引用。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
备注
此方法将 obj
数据写入默认注册表项下的指定值。 使用 CWinAppEx::GetRegistryBase
确定当前注册表项。
CWinAppEx::WriteSectionBinary
将二进制数据写入注册表中的值。
BOOL WriteSectionBinary(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
LPBYTE pData,
UINT nBytes);
参数
lpszSubSection
[in] 包含注册表项名称的字符串
lpszEntry
[in] 包含要设置的值的字符串。
pData
[in] 要写入注册表的数据。
nBytes
[in] pData
的大小(以字节为单位)。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
备注
lpszSubSection
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
如果不存在 lpszEntry
指定的键,则此方法将创建该键。
CWinAppEx::WriteSectionInt
将数值数据写入注册表。
BOOL WriteSectionInt(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
int nValue);
参数
lpszSubSection
[in] 包含注册表键相对路径的字符串。
lpszEntry
[in] 包含要设置的值的字符串。
nValue
[in] 要写入注册表的数据。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
注解
lpszSubSection
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
如果不存在 lpszEntry
指定的键,则此方法将创建该键。
CWinAppEx::WriteSectionObject
将从 CObject
类派生的数据写入特定的注册表值。
BOOL WriteSectionObject(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
CObject& obj);
参数
lpszSubSection
[in] 包含注册表键名称的字符串。
lpszEntry
[in] 包含要设置值的名称的字符串。
obj
[in] 要存储的数据。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
注解
lpszSubSection
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
如果 lpszSubSection
指定的注册表项下不存在 lpszEntry
指定的值,此方法将创建该值。
CWinAppEx::WriteSectionString
将字符串数据写入注册表中的值。
BOOL WriteSectionString(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
LPCTSTR lpszValue);
参数
lpszSubSection
[in] 包含注册表键名称的字符串。
lpszEntry
[in] 包含要设置的值的字符串。
lpszValue
[in] 要写入注册表的字符串数据。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
注解
lpszSubSection
参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
如果 lpszSubSection
下不存在 lpszEntry
指定的值,则此方法将创建该值。
CWinAppEx::WriteString
将字符串数据写入注册表。
BOOL WriteString(
LPCTSTR lpszEntry,
LPCTSTR lpszValue);
参数
lpszEntry
[in] 包含注册表键名称的字符串。
lpszValue
[in] 要存储的数据。
返回值
如果此方法成功,则返回 TRUE
;否则返回 FALSE
。
备注
lpszEntry
参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
。
如果不存在 lspzEntry
指定的键,则此方法将创建该键。
另请参阅
层次结构图
类
CWinApp
类
CMouseManager
类
CContextMenuManager
类
CKeyboardManager
类
CUserToolsManager
类