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
應用程式之後,您可以初始化任一應用程式管理員。 使用應用程式管理員之前,您必須先呼叫適當的初始化方法來初始化它。 若要取得特定管理員的指標,請呼叫相關聯的 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::GetRegistryBase。
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] 第一次卸除功能表識別碼。
uiCmdLast
[in] 最後一次卸除功能表識別碼。
傳回值
如果 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] 架構用來作為使用者工具功能表命令識別碼預留位置之不帶正負號的整數。
uiCmdFirst
[in] 第一個使用者工具命令的命令識別碼。
uiCmdLast
[in] 最後一個使用者工具命令的命令識別碼。
pToolRTC
[in] CUserToolsManager
物件用來建立新使用者工具的類別。
uArgMenuID
[in] 引數功能表識別碼。
uInitDirMenuID
[in] 初始工具目錄的功能表識別碼。
傳回值
如果方法建立並初始化 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。
備註
這個方法會從登錄讀取資料。 讀取的資料是衍生自 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
。
如果您的應用程式已有殼層管理員,且您呼叫 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] 檢視識別碼。
傳回值
如果架構找到命令,則為 TRUE
;否則為 FALSE
。
備註
為了支援自訂滑鼠行為,您必須在處理 WM_LBUTTONDBLCLK
訊息時呼叫此函式。 這個方法會執行與 iViewId
所提供檢視識別碼相關聯的命令。 如需自訂滑鼠行為的詳細資訊,請參閱鍵盤和滑鼠自訂。
CWinAppEx::OnWorkspaceIdle
virtual BOOL OnWorkspaceIdle(CWnd*);
參數
[輸入] 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] 功能表資源識別碼。
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
方法。
如果 lpszEntry
指定的值不存在於 lpszSubSection
指定的登錄機碼底下,這個方法將會建立該值。
CWinAppEx::WriteSectionString
將字串資料寫入登錄中的值。
BOOL WriteSectionString(
LPCTSTR lpszSubSection,
LPCTSTR lpszEntry,
LPCTSTR lpszValue);
參數
lpszSubSection
[in] 包含登錄機碼名稱的字串。
lpszEntry
[in] 包含要設定之值的字串。
lpszValue
[in] 要寫入登錄的字串資料。
傳回值
如果此方法成功,則為 TRUE
;否則為 FALSE
。
備註
lpszSubSection
參數不是登錄項目的絕對路徑。 這是附加至應用程式預設登錄機碼結尾的相對路徑。 若要取得或設定預設登入機碼,請分別使用 CWinAppEx::GetRegistryBase
和 CWinAppEx::SetRegistryBase
方法。
如果 lpszEntry
指定的值不存在於 lpszSubSection
底下,這個方法將會建立值。
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
類別