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();
繼承階層架構
需求
標頭: 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。
備註
輸入參數必須符合 nKey 和 fVirt 快速鍵數據表中的專案,以判斷是否在 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
鍵盤和滑鼠自訂