共用方式為


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 應用程式之後,您可以初始化任一應用程式管理員。 使用應用程式管理員之前,您必須先呼叫適當的初始化方法來初始化它。 若要取得特定管理員的指標,請呼叫相關聯的 get 方法。 CWinAppEx 類別會管理下列應用程式管理員:CMouseManager 類別CContextMenuManager 類別CKeyboardManager 類別CUserToolsManager 類別CMenuTearOffManager 類別

繼承階層架構

CObject

CCmdTarget

CWinThread

CWinApp

CWinAppEx

需求

標頭: afxwinappex.h

CWinAppEx::CleanState

從 Windows 登錄中移除應用程式的所有資訊。

virtual BOOL CleanState(LPCTSTR lpszSectionName=NULL);

參數

lpszSectionName
[in] 包含登錄機碼路徑的字串。

傳回值

如果方法成功,則為非零;否則為 0。

備註

這個方法會從登錄的特定區段清除應用程式資料。 您可以使用參數 lpszSectionName 來指定要清除的區段。 如果 lpszSectionNameNULL,這個方法會使用儲存在 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::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。

備註

這個方法會從登錄讀取資料。 讀取的資料是衍生自 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

如果您的應用程式已有殼層管理員,且您呼叫 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::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] 檢視識別碼。

傳回值

如果架構找到命令,則為 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::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] 功能表資源識別碼。

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 方法。

如果 lpszEntry 指定的值不存在於 lpszSubSection 指定的登錄機碼底下,這個方法將會建立該值。

CWinAppEx::WriteSectionString

將字串資料寫入登錄中的值。

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

參數

lpszSubSection
[in] 包含登錄機碼名稱的字串。

lpszEntry
[in] 包含要設定之值的字串。

lpszValue
[in] 要寫入登錄的字串資料。

傳回值

如果此方法成功,則為 TRUE;否則為 FALSE

備註

lpszSubSection 參數不是登錄項目的絕對路徑。 這是附加至應用程式預設登錄機碼結尾的相對路徑。 若要取得或設定預設登入機碼,請分別使用 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase 方法。

如果 lpszEntry 指定的值不存在於 lpszSubSection 底下,這個方法將會建立值。

CWinAppEx::WriteString

將字串資料寫入登錄。

BOOL WriteString(
    LPCTSTR lpszEntry,
    LPCTSTR lpszValue);

參數

lpszEntry
[in] 包含登錄機碼名稱的字串。

lpszValue
[in]要儲存的資料。

傳回值

如果此方法成功,則為 TRUE;否則為 FALSE

備註

lpszEntry 參數是登錄項目的名稱,位於應用程式的預設登錄機碼底下。 若要取得或設定預設登錄機碼,請分別使用 CWinAppEx::GetRegistryBaseCWinAppEx::SetRegistryBase 方法。

如果 lspzEntry 指定的機碼不存在,這個方法將會建立機碼。

另請參閱

階層架構圖表
類別
CWinApp 類別
CMouseManager 類別
CContextMenuManager 類別
CKeyboardManager 類別
CUserToolsManager 類別