在 C++ 应用程序中,PeekMessage/TranslateMessage
您可以调用WM_CHAR
消息,告诉您根据当前 IME 按下了哪个字符。这使您免于将键码转换为字符码,这对于非英语 IME 来说可能具有挑战性。
.NET 窗口是否具有与WM_CHAR
windows 消息事件等效的功能?我能以某种方式获得它吗?显然,我可以监听关键事件并将键码转换为字符码,但它可能不如 windows 在内部执行它那么健壮。
在 C++ 应用程序中,PeekMessage/TranslateMessage
您可以调用WM_CHAR
消息,告诉您根据当前 IME 按下了哪个字符。这使您免于将键码转换为字符码,这对于非英语 IME 来说可能具有挑战性。
.NET 窗口是否具有与WM_CHAR
windows 消息事件等效的功能?我能以某种方式获得它吗?显然,我可以监听关键事件并将键码转换为字符码,但它可能不如 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);
}