2013-03-29 79 views
0

在帶有PeekMessage/TranslateMessage的C++應用程序中,您可以調用WM_CHAR消息,告訴您基於當前的IME已經按下了哪個字符。這樣可以避免將密鑰代碼轉換爲字符代碼,這對於非英文輸入法是非常具有挑戰性的。C#等價於WM_CHAR按鍵事件?

.NET窗口是否等同於WM_CHAR Windows消息事件?我能以某種方式獲得它嗎?很明顯,我可以聽重要事件和convert keycodes to char codes,但它可能不像內部的Windows那樣健壯。

+1

真的不明白這一點。可以獲得焦點的GUI組件具有KeyDown,KeyPress,KeyUp事件? –

+0

是的,但'WM_CHAR'不同於'WM_KEYDOWN',因爲它提供了unicode字符代碼而不是典型的鍵碼。我在.NET中查找這些信息。 –

回答

1

MFC一個最接近的方法是使用的WndProc:

protected override void WndProc(ref Message m) 
{ 

    if (m.Msg == WM_CHAR) //define WM_CHAR properly 
    { 

    } 
    base.WndProc(ref m); 
}