CKeyboardManager 類別

管理主框架視窗及子框架視窗的快速鍵資料表。

語法

class CKeyboardManager : public CObject

成員

公用建構函式

名稱 描述
CKeyboardManager::CKeyboardManager 建構 CKeyboardManager 物件。

公用方法

名稱 描述
CKeyboardManager::CleanUp 清除快速鍵數據表。
CKeyboardManager::FindDefaultAccelerator 擷取指定命令和視窗的預設快捷鍵。
CKeyboardManager::IsKeyHandled 判斷快捷鍵是否由快捷鍵數據表處理。
CKeyboardManager::IsKeyPrintable 指出字元是否可列印。
CKeyboardManager::IsShowAllAccelerators 指出功能表是否顯示命令的所有快速鍵,或只顯示預設快速鍵。
CKeyboardManager::LoadState 從 Windows 登錄載入快速鍵數據表。
CKeyboardManager::ResetAll 從應用程式資源重載快速鍵數據表。
CKeyboardManager::SaveState 將快捷鍵數據表儲存至 Windows 登錄。
CKeyboardManager::ShowAllAccelerators 指定架構是否顯示所有命令的所有快速鍵,或每個命令的單一快捷鍵。 這個方法不會影響只有一個相關聯快捷鍵的命令。
CKeyboardManager::TranslateCharToUpper 將字元轉換成其上層緩存器。
CKeyboardManager::UpdateAccelTable 使用新的快速鍵數據表來更新快速鍵數據表。

備註

這個類別的成員可讓您將快速鍵數據表儲存並載入 Windows 登錄、使用範本來更新簡短的按鍵數據表,並在框架視窗中尋找命令的預設快速鍵。 此外, CKeyboardManager 物件可讓您控制如何向用戶顯示快速鍵。

您不應該手動建立 CKeyboardManager 物件。 應用程式架構會自動建立它。 不過,您應該在應用程式的初始化程式期間呼叫 CWinAppEx::InitKeyboardManager 。 若要取得應用程式的鍵盤管理員指標,請呼叫 CWinAppEx::GetKeyboardManager

範例

下列範例示範如何從CWinAppEx類別擷取物件的指標CKeyboardManager,以及如何顯示與功能表命令相關聯的所有快捷鍵。 此代碼段是自定義頁面範例一部分。

// The GetKeyboardManager method is inherited from the CWinAppEx class.
CKeyboardManager *cKeyboardManager = GetKeyboardManager();
cKeyboardManager->ShowAllAccelerators();

繼承階層架構

CObject

CKeyboardManager

需求

標頭: afxkeyboardmanager.h

CKeyboardManager::CKeyboardManager

建構 CKeyboardManager 物件。

CKeyboardManager();

備註

在大部分情況下,您不需要直接建立 CKeyboardManager 。 根據預設,架構會為您建立一個。 若要取得 的 CKeyboardManager指標,請呼叫 CWinAppEx::GetKeyboardManager。 如果您手動建立一個,您必須使用 CWinAppEx::InitKeyboardManager 方法來初始化它。

CKeyboardManager::CleanUp

CKeyboardManager釋放資源並清除所有快速鍵對應。

static void CleanUp();

備註

如需快捷鍵的詳細資訊,請參閱 鍵盤和滑鼠自定義

當應用程式結束時,您不需要呼叫此函式,因為架構會在應用程式結束期間自動呼叫它。

CKeyboardManager::FindDefaultAccelerator

擷取指定命令和視窗的預設快捷鍵。

static BOOL FindDefaultAccelerator(
    UINT uiCmd,
    CString& str,
    CFrameWnd* pWndFrame,
    BOOL bIsDefaultFrame);

參數

uiCmd
[in]命令標識碼。

str
[out] CString 物件的參考。

pWndFrame
[in] 框架視窗的指標。

bIsDefaultFrame
[in]指定框架視窗是否為預設框架視窗。

傳回值

如果找到快捷方式,則為非零;否則為 0。

備註

這個方法會查閱 uiCmd 指定的命令,並擷取預設快捷鍵。 然後,方法會採用與此快捷鍵相關聯的字串,並將值 寫入 str 參數。

CKeyboardManager::IsKeyHandled

判斷指定的索引鍵是否由 CKeyboardManager 類別處理。

static BOOL __stdcall IsKeyHandled(
    WORD nKey,
    BYTE fVirt,
    CFrameWnd* pWndFrame,
    BOOL bIsDefaultFrame);

參數

nKey
[in]要檢查的金鑰。

fVirt
[in]指定快捷鍵的行為。 如需可能值的清單,請參閱 ACCEL 結構

pWndFrame
[in]框架視窗。 這個方法會判斷是否在此畫面中處理快速鍵。

bIsDefaultFrame
[in]布爾值參數,指出 pWndFrame 是否為預設框架視窗。

傳回值

如果已處理快捷鍵,則為TRUE。 如果索引鍵未處理或 pWndFrame 為 NULL,則為 FALSE。

備註

輸入參數必須符合 nKeyfVirt 快速鍵數據表中的專案,以判斷是否在 pWndFrame處理快捷鍵。

CKeyboardManager::IsKeyPrintable

指出字元是否可列印。

static BOOL __stdcall IsKeyPrintable(const UINT nChar);

參數

nChar
[in]這個方法檢查的字元。

傳回值

如果字元可列印,則為非零,如果不是,則為零。

備註

如果呼叫 GetKeyboardState 失敗,這個方法就會失敗。

CKeyboardManager::IsShowAllAccelerators

指出功能表是否顯示與功能表命令相關聯的所有快速鍵,或只顯示預設快速鍵。

static BOOL IsShowAllAccelerators();

傳回值

如果應用程式列出功能表命令的所有快速鍵,則為非零;如果應用程式只顯示預設快速鍵,則為 0。

備註

應用程式會列出功能表欄中功能表命令的快捷鍵。 使用 CKeyboardManager::ShowAllAccelerators 函式來控制應用程式是否列出所有快捷鍵或只列出預設快捷鍵。

CKeyboardManager::LoadState

從 Windows 登錄載入快速鍵數據表。

BOOL LoadState(
    LPCTSTR lpszProfileName = NULL,
    CFrameWnd* pDefaultFrame = NULL);

參數

lpszProfileName
[in]儲存數據的登錄路徑 CKeyboardManager

pDefaultFrame
[in]要當做預設視窗使用的框架視窗指標。

傳回值

如果狀態已成功載入,則為非零,否則為 0。

備註

如果 lpszProfileName 參數為 NULL,此方法會檢查數據的默認登錄位置CKeyboardManager。 默認登錄位置是由 CWinAppEx 類別指定。 數據之前必須使用 CKeyboardManager::SaveState 方法撰寫。

如果您未指定預設視窗,則會使用應用程式的主框架視窗。

CKeyboardManager::ResetAll

從應用程式資源重載快速鍵數據表。

void ResetAll();

備註

此函式會清除儲存在 實例中的 CKeyboardManager 快捷方式。 然後,它會從應用程式資源重載鍵盤管理員的狀態。

CKeyboardManager::SaveState

將快捷鍵數據表儲存至 Windows 登錄。

BOOL SaveState(
    LPCTSTR lpszProfileName = NULL,
    CFrameWnd* pDefaultFrame = NULL);

參數

lpszProfileName
[in]用於儲存狀態的 CKeyboardManager 登錄路徑。

pDefaultFrame
[in]成為預設視窗之框架視窗的指標。

傳回值

如果鍵盤管理員狀態已成功儲存,則為非零,否則為0。

備註

如果 lpszProfileName 參數為 NULL,這個方法會將狀態寫入 CKeyboardManager CWinAppEx 類別指定的預設位置。 如果您指定位置,稍後可以使用 CKeyboardManager::LoadState 方法載入數據。

如果您未指定預設視窗,主框架視窗將做為默認視窗。

CKeyboardManager::ShowAllAccelerators

顯示與功能表命令相關聯的所有快速鍵。

static void ShowAllAccelerators(
    BOOL bShowAll = TRUE,
    LPCTSTR lpszDelimiter = _afxDefaultAcceleratorDelimiter);

參數

bShowAll
[in]如果為TRUE,則會顯示所有快捷鍵。 如果為 FALSE,則只會顯示第一個快速鍵。

lpszDelimiter
[in]在快速鍵之間插入的字串。 如果只顯示一個快捷鍵,這個分隔符就不會有任何作用。

備註

根據預設,如果命令有多個與其相關聯的快速鍵,則只會顯示第一個快捷鍵。 此函式可讓您列出與所有命令相關聯的所有快捷鍵。

快捷鍵會列在功能表欄中的命令旁邊。 如果顯示所有快捷鍵,lpszDelimiter 提供的字串將會分隔個別的快捷鍵。

CKeyboardManager::TranslateCharToUpper

將字元轉換成其上層緩存器。

static UINT TranslateCharToUpper(const UINT nChar);

參數

nChar
[in]要轉換的字元。

傳回值

輸入參數上層緩存器字元。

CKeyboardManager::UpdateAccelTable

使用新的快速鍵數據表來更新快速鍵數據表。

BOOL UpdateAccelTable(
    CMultiDocTemplate* pTemplate,
    LPACCEL lpAccel,
    int nSize,
    CFrameWnd* pDefaultFrame = NULL);

BOOL UpdateAccelTable(
    CMultiDocTemplate* pTemplate,
    HACCEL hAccelNew,
    CFrameWnd* pDefaultFrame = NULL);

參數

pTemplate
[in]檔範本的指標。

lpAccel
[in]新快捷鍵的指標。

nSize
[in]新快捷鍵表格的大小。

pDefaultFrame
[in]預設框架視窗的指標。

hAccelNew
[in]新快捷方式數據表的句柄。

傳回值

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

備註

使用此函式,將現有的快速鍵取代為數個框架窗口物件的新快速鍵。 函式會接收檔範本做為參數,以取得連線至指定檔範本之所有框架視窗物件的存取權。

另請參閱

階層架構圖表
類別
CWinAppEx 類別
CWinAppEx::InitKeyboardManager
鍵盤和滑鼠自訂