2010-11-29 34 views
1

在我需要以不同方式處理大量密鑰的應用程序中,我想處理WM_KEYDOWN中的所有情況,而不是使用WM_CHAR。是否有可能從WM_KEYDOWN提供的虛擬鍵序列中獲取正確的ASCII/UNICODE字符,而不是依賴更常規的TranslateMsg/WM_CHAR?在WM_KEYDOWN中獲取Unicode字符

舉個例子:應用程序應該能夠以完全不同的方式處理Shift-B,按CTRL-B的常規B。

使用MapVirtualKey,您不使用Shift,Control和Alt鍵的狀態,或者至少不是我能看到的。

正如Leo Davidson回答:您可以使用ToUnicode調用來自己執行VK - > Unicode轉換。

回答

6

WM_KEYDOWN涉及字符代碼,基本上是指鍵盤上的物理鍵。

如果您想處理Unicode字符,請改爲處理WM_CHAR(16位Unicode字符,假設您的窗口本身是Unicode)或WM_UNICHAR(32位Unicode字符)。

編輯:如果你想自己做轉換,請使用ToUnicode API。

+2

這我知道。我問了這個問題,看看TranslateMsg發送WM_CHAR的邏輯是否也可以使用另一個不使用windows消息的路徑獲得(如API調用) – 2010-11-29 10:35:26

相關問題