在帶有PeekMessage/TranslateMessage
的C++應用程序中,您可以調用WM_CHAR
消息,告訴您基於當前的IME已經按下了哪個字符。這樣可以避免將密鑰代碼轉換爲字符代碼,這對於非英文輸入法是非常具有挑戰性的。C#等價於WM_CHAR按鍵事件?
.NET窗口是否等同於WM_CHAR
Windows消息事件?我能以某種方式獲得它嗎?很明顯,我可以聽重要事件和convert keycodes to char codes,但它可能不像內部的Windows那樣健壯。
在帶有PeekMessage/TranslateMessage
的C++應用程序中,您可以調用WM_CHAR
消息,告訴您基於當前的IME已經按下了哪個字符。這樣可以避免將密鑰代碼轉換爲字符代碼,這對於非英文輸入法是非常具有挑戰性的。C#等價於WM_CHAR按鍵事件?
.NET窗口是否等同於WM_CHAR
Windows消息事件?我能以某種方式獲得它嗎?很明顯,我可以聽重要事件和convert keycodes to char codes,但它可能不像內部的Windows那樣健壯。
看來你正在尋找KeyPress事件,並提供KeyPressEventArgs實例的KeyChar屬性。
到MFC
一個最接近的方法是使用的WndProc:
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_CHAR) //define WM_CHAR properly
{
}
base.WndProc(ref m);
}
真的不明白這一點。可以獲得焦點的GUI組件具有KeyDown,KeyPress,KeyUp事件? –
是的,但'WM_CHAR'不同於'WM_KEYDOWN',因爲它提供了unicode字符代碼而不是典型的鍵碼。我在.NET中查找這些信息。 –