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::CleanState 从 Windows 注册表中移除应用程序的相关信息。
CWinAppEx::EnableLoadWindowPlacement 指定应用程序是否将从注册表加载主框架窗口的初始大小和位置。
CWinAppEx::EnableTearOffMenus 为应用程序启用可拖曳菜单。
CWinAppEx::EnableUserTools 允许用户在应用程序中创建自定义菜单命令。
CWinAppEx::ExitInstance 由框架从 Run 成员函数内调用以退出此应用程序实例。 (替代 CWinApp::ExitInstance。)
CWinAppEx::GetBinary 读取与指定的注册表值关联的二进制数据。
CWinAppEx::GetContextMenuManager 返回指向全局 CContextMenuManager 对象的指针。
CWinAppEx::GetDataVersion
CWinAppEx::GetDataVersionMajor 返回在 Windows 注册表中保存的应用程序的主版本。
CWinAppEx::GetDataVersionMinor 返回在 Windows 注册表中保存的应用程序的次要版本。
CWinAppEx::GetInt 从注册表中读取与指定值关联的数值数据。
CWinAppEx::GetKeyboardManager 返回指向全局 CKeyboardManager 对象的指针。
CWinAppEx::GetMouseManager 返回指向全局 CMouseManager 对象的指针。
CWinAppEx::GetObject 从注册表中读取与指定值关联的 CObject 派生数据。
CWinAppEx::GetRegSectionPath 返回注册表项路径的字符串。 该路径将提供的相对路径与应用程序路径连接起来。
CWinAppEx::GetRegistryBase 返回应用程序的注册表路径。
CWinAppEx::GetSectionBinary 从注册表中读取与指定键和值关联的二进制数据。
CWinAppEx::GetSectionInt 从注册表中读取与指定键和值关联的数值数据。
CWinAppEx::GetSectionObject 从注册表中读取与指定键和值关联的 CObject 数据。
CWinAppEx::GetSectionString 从注册表中读取与指定键和值关联的字符串数据。
CWinAppEx::GetShellManager 返回指向全局 CShellManager 对象的指针。
CWinAppEx::GetString 从注册表中读取与指定值关联的字符串数据。
CWinAppEx::GetTooltipManager 返回指向全局 CTooltipManager 对象的指针。
CWinAppEx::GetUserToolsManager 返回指向全局 CUserToolsManager 对象的指针。
CWinAppEx::InitContextMenuManager 初始化 CContextMenuManager 对象。
CWinAppEx::InitKeyboardManager 初始化 CKeyboardManager 对象。
CWinAppEx::InitMouseManager 初始化 CMouseManager 对象。
CWinAppEx::InitShellManager 初始化 CShellManager
CWinAppEx::InitTooltipManager 初始化 CTooltipManager 类。
CWinAppEx::IsResourceSmartUpdate
CWinAppEx::IsStateExists 指示注册表中是否存在指定的键。
CWinAppEx::LoadState 从注册表加载应用程序状态。
CWinAppEx::OnAppContextHelp 当用户请求“自定义”对话框的上下文帮助时由框架调用
CWinAppEx::OnViewDoubleClick 当用户双击应用程序中的任意位置时调用用户定义的命令。
CWinAppEx::OnWorkspaceIdle
CWinAppEx::SaveState 将应用程序框架状态写入 Windows 注册表。
CWinAppEx::SetRegistryBase 设置默认注册表项的路径。 此项将用作所有后续注册表调用的根。
CWinAppEx::ShowPopupMenu 显示弹出菜单。
CWinAppEx::WriteBinary 将二进制数据写入指定的注册表值。
CWinAppEx::WriteInt 将数值数据写入指定的注册表值。
CWinAppEx::WriteObject 将从 CObject派生的数据写入指定的注册表值。
CWinAppEx::WriteSectionBinary 将二进制数据写入指定的注册表项的值。
CWinAppEx::WriteSectionInt 将数值数据写入指定的注册表项的值。
CWinAppEx::WriteSectionObject 将从 CObject 类派生的数据写入指定的注册表项的值。
CWinAppEx::WriteSectionString 将字符串数据写入指定的注册表项的值。
CWinAppEx::WriteString 将字符串数据写入指定的注册表值。

受保护方法

名称 描述
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 类管理以下应用程序管理器:CMouseManagerCContextMenuManagerCKeyboardManagerCUserToolsManagerCMenuTearOffManager

继承层次结构

CObject

CCmdTarget

CWinThread

CWinApp

CWinAppEx

要求

标头afxwinappex.h

CWinAppEx::CleanState

从 Windows 注册表中移除应用程序的所有相关信息。

virtual BOOL CleanState(LPCTSTR lpszSectionName=NULL);

参数

lpszSectionName
[in] 包含注册表项路径的字符串。

返回值

如果此方法成功,则返回非零值;否则返回 0。

备注

此方法清除注册表特定部分中的应用程序数据。 可以使用参数 lpszSectionName 指定要清除的部分。 如果 lpszSectionNameNULL,此方法将使用存储在 CWinAppEx 对象中的默认注册表路径。 要获取默认注册表路径,请使用 CWinAppEx::GetRegistryBas

CWinAppEx::CWinAppEx

构造 CWinAppEx 对象。

CWinAppEx(BOOL bResourceSmartUpdate = FALSE);

参数

bResourceSmartUpdate
[in] 布尔参数,用于指定工作区对象是否应检测和处理资源更新。

备注

CWinAppEx 类具有初始化方法,提供用于将应用程序信息保存和加载到注册表的功能,并且控制全局应用程序设置。 通过它,你还可使用全局管理器,例如 CKeyboardManagerCUserToolsManager。 每个应用程序只能有一个 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::WriteBinaryCWinAppEx::WriteSectionBinary

lpszEntry 参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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::WriteSectionIntCWinAppEx::WriteInt

lpszEntry 参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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::WriteObjectCWinAppEx::WriteSectionObject

lpszEntry 参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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::WriteBinaryCWinAppEx::WriteSectionBinary 读取写入注册表的二进制数据。

lpszSubSection 参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase

CWinAppEx::GetSectionInt

从注册表读取整数数据。

int GetSectionInt(
    LPCTSTR lpszSubSection,
    LPCTSTR lpszEntry,
    int nDefault = 0);

参数

lpszSubSection
[in] 包含注册表键相对路径的字符串。

lpszEntry
[in] 包含要读取的值的字符串。

nDefault
[in] 指定的值不存在时返回的默认值。

返回值

返回存储在指定注册表值中的整数数据;如果此数据不存在,则返回 nDefault

注解

使用方法 CWinAppEx::WriteIntCWinAppEx::WriteSectionInt 将整数数据写入注册表。

lpszSubSection 参数不是注册表项的绝对路径。 它是添加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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::WriteObjectCWinAppEx::WriteSectionObject

lpszSubSection 参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase

CWinAppEx::GetSectionString

从注册表读取字符串数据。

CString GetSectionString(
    LPCTSTR lpszSubSection,
    LPCTSTR lpszEntry,
    LPCTSTR lpszDefault = _T(""));

参数

lpszSubSection
[in] 包含注册表键相对路径的字符串。

lpszEntry
[in] 包含要读取的值的字符串。

lpszDefault
[in] 指定的值不存在时返回的默认值。

返回值

如果数据存在,则返回存储在指定注册表值中的字符串数据;否则返回 lpszDefault

注解

此方法读取写入注册表的字符串数据。 使用 CWinAppEx::WriteStringCWinAppEx::WriteSectionString 将字符串数据写入注册表。

lpszSubSection 参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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::WriteStringCWinAppEx::WriteSectionString

lpszEntry 参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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。

备注

此方法加载应用程序的状态以及框架窗口的任何状态信息。 为框架窗口加载的信息应用于提供的框架窗口。 如果未提供框架窗口,则仅加载应用程序状态信息。 应用程序信息包括 CMouseManagerCContextMenuManagerCKeyboardManagerCUserToolsManager的状态。

CFrameImpl::OnLoadFrame 的默认实现调用 LoadState

lpszSectionName 参数不是注册表项的绝对路径。 它是添加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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

备注

此方法会保存应用程序的状态以及提供的框架窗口的任何状态信息。 如果未提供框架窗口,该方法仅保存应用程序状态。 应用程序信息包括 CMouseManagerCContextMenuManagerCKeyboardManagerCUserToolsManager的状态。

lpszSectionName 参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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::GetRegistryBaseCWinAppEx::SetRegistryBase

如果不存在 lpszEntry 指定的键,则此方法将创建该键。

CWinAppEx::WriteInt

将数值数据写入注册表。

BOOL WriteInt(
    LPCTSTR lpszEntry,
    int nValue);

参数

lpszEntry
[in] 包含注册表键名称的字符串。

nValue
[in] 要存储的数据。

返回值

如果此方法成功,则返回 TRUE;否则返回 FALSE

备注

lpszEntry 参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::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::GetRegistryBaseCWinAppEx::SetRegistryBase

如果不存在 lpszEntry 指定的键,则此方法将创建该键。

CWinAppEx::WriteSectionInt

将数值数据写入注册表。

BOOL WriteSectionInt(
    LPCTSTR lpszSubSection,
    LPCTSTR lpszEntry,
    int nValue);

参数

lpszSubSection
[in] 包含注册表键相对路径的字符串。

lpszEntry
[in] 包含要设置的值的字符串。

nValue
[in] 要写入注册表的数据。

返回值

如果此方法成功,则返回 TRUE;否则返回 FALSE

注解

lpszSubSection 参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase

如果不存在 lpszEntry 指定的键,则此方法将创建该键。

CWinAppEx::WriteSectionObject

将从 CObject派生的数据写入特定的注册表值。

BOOL WriteSectionObject(
    LPCTSTR lpszSubSection,
    LPCTSTR lpszEntry,
    CObject& obj);

参数

lpszSubSection
[in] 包含注册表键名称的字符串。

lpszEntry
[in] 包含要设置值的名称的字符串。

obj
[in] 要存储的数据。

返回值

如果此方法成功,则返回 TRUE;否则返回 FALSE

注解

lpszSubSection 参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase

如果 lpszSubSection 指定的注册表项下不存在 lpszEntry 指定的值,此方法将创建该值。

CWinAppEx::WriteSectionString

将字符串数据写入注册表中的值。

BOOL WriteSectionString(
    LPCTSTR lpszSubSection,
    LPCTSTR lpszEntry,
    LPCTSTR lpszValue);

参数

lpszSubSection
[in] 包含注册表键名称的字符串。

lpszEntry
[in] 包含要设置的值的字符串。

lpszValue
[in] 要写入注册表的字符串数据。

返回值

如果此方法成功,则返回 TRUE;否则返回 FALSE

注解

lpszSubSection 参数不是注册表项的绝对路径。 它是追加到应用程序默认注册表项末尾的相对路径。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase

如果 lpszSubSection 下不存在 lpszEntry 指定的值,则此方法将创建该值。

CWinAppEx::WriteString

将字符串数据写入注册表。

BOOL WriteString(
    LPCTSTR lpszEntry,
    LPCTSTR lpszValue);

参数

lpszEntry
[in] 包含注册表键名称的字符串。

lpszValue
[in] 要存储的数据。

返回值

如果此方法成功,则返回 TRUE;否则返回 FALSE

备注

lpszEntry 参数是位于应用程序默认注册表项下的注册表项的名称。 要获取或设置默认注册表项,请分别使用方法 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase

如果不存在 lspzEntry 指定的键,则此方法将创建该键。

另请参阅

层次结构图

CWinApp
CMouseManager
CContextMenuManager
CKeyboardManager
CUserToolsManager