mapVirtualKeyA 函式 (winuser.h)

將 (對應) 虛擬金鑰碼轉譯為掃描碼或字元值,或將掃描碼轉譯成虛擬密鑰碼。

語法

UINT MapVirtualKeyA(
  [in] UINT uCode,
  [in] UINT uMapType
);

參數

[in] uCode

類型: UINT

虛擬金鑰代碼或掃描金鑰的程式代碼。 此值的解譯方式取決於 uMapType 參數的值。

[in] uMapType

類型: UINT

要執行的翻譯。 此參數的值取決於 uCode 參數的值。

意義
MAPVK_VK_TO_VSC
0
uCode 參數是虛擬密鑰程式代碼,並轉譯為掃描程序代碼。 如果它是虛擬機碼,不會區分左鍵和右手鍵,則會傳回左側掃描程序代碼。 如果沒有轉譯,函式會傳回 0。
MAPVK_VSC_TO_VK
1
uCode 參數是掃描程序代碼,並轉譯成虛擬密鑰程式代碼,不會區分左鍵和右手鍵。 如果沒有轉譯,函式會傳回 0。
Windows Vista 和更新版本:uCode 值的高位元組可以包含0xe0或0xe1,以指定延伸掃描碼。
MAPVK_VK_TO_CHAR
2
uCode 參數是虛擬索引鍵程式代碼,並以傳回值的低順序字組轉譯成未移位的字元值。 (變音符號) 的無效索引鍵會藉由設定傳回值的頂端位來表示。 如果沒有轉譯,函式會傳回 0。 請參閱<備註>。
MAPVK_VSC_TO_VK_EX
3
uCode 參數是掃描程式代碼,會轉譯成虛擬密鑰程式代碼,以區別左手鍵和右手鍵。 如果沒有轉譯,函式會傳回 0。
Windows Vista 和更新版本:uCode 值的高位元組可以包含0xe0或0xe1,以指定延伸掃描碼。
MAPVK_VK_TO_VSC_EX
4
Windows Vista 和更新版本:uCode 參數是虛擬密鑰程式代碼,並轉譯為掃描程序代碼。 如果它是虛擬機碼,不會區分左鍵和右手鍵,則會傳回左側掃描程序代碼。 如果掃描碼是延伸掃描碼,傳回值的高位元組將包含0xe0或0xe1來指定延伸掃描碼。 如果沒有轉譯,函式會傳回 0。

傳回值

類型: UINT

傳回值是掃描碼、虛擬索引鍵代碼或字元值,視 uCodeuMapType 的值而定。 如果沒有轉譯,則傳回值為零。

備註

若要指定用於翻譯指定程式碼之鍵盤配置的句柄,請使用 MapVirtualKeyEx 函 式。

應用程式可以使用 MapVirtualKey 將掃描碼轉譯為虛擬密鑰程式代碼常數 ,VK_SHIFTVK_CONTROLVK_MENU,反之亦然。 這些翻譯不會區分 SHIFT、CTRL 或 ALT 鍵的左右實例。

應用程式可以藉由呼叫 MapVirtualKey ,並將 uCode 設定為下列其中一個虛擬機碼常數,來取得對應至下列其中一個索引鍵的左邊或右側實例的掃描程式代碼:

  • VK_LSHIFT
  • VK_RSHIFT
  • VK_LCONTROL
  • VK_RCONTROL
  • VK_LMENU
  • VK_RMENU

這些左右辨別常數只能透過 GetKeyboardState、SetKeyboardStateGetAsyncKeyStateGetKeyStateMapVirtualKey 和 MapVirtualKeyEx 函式來使用。 如需虛擬金鑰代碼的完整清單,請參閱 虛擬密鑰代碼

MAPVK_VK_TO_CHAR 模式 虛擬金鑰代碼中,'A'。'Z' 索引鍵會轉譯為大寫 'A'。'不論目前的鍵盤配置為何,Z' 字元。 如果您想要將虛擬機碼程式代碼轉譯為對應的字元,請使用 ToAscii 函式。

注意

winuser.h 標頭會將 MapVirtualKey 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winuser.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll

另請參閱