将 wParam 转换为虚拟键代码
本文关键字:代码 虚拟 wParam 转换 | 更新日期: 2023-09-27 18:35:24
我正在自己学习C#和.NET。我正在尝试学习如何根据这篇MSDN文章对文本框进行子类化。我没有使用文章中确切的子类过程,但自己尝试了一些东西。
我遇到的问题是正确转换wParam
以便我可以将其与虚拟键代码进行比较。
下面是子类过程的代码,有问题的部分在注释中指出:
using System.Windows.Forms;
namespace BtnEdit
{
public class SubclassEdit : TextBox
{
private const int WM_CHAR = 0x102;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_CHAR:
{
// how to convert m.WParam ???
switch (m.WParam.ToInt32)
{
case 0x50: // this gives error
this.Text = "Pressed key P";
break;
default:
base.WndProc(ref m);
break;
}
}
break;
default:
//pass other messages to default procedure
base.WndProc(ref m);
break;
}
}
}
}
我试过switch ( (Keys)m.WParam )
然后我能够做一些像case Keys.A
这样的事情,它奏效了。这种方法的问题在于,在这种情况下,我无法测试小写字母a
。此外,像case Keys.Left
这样的事情也不起作用。
问题:
我应该如何修改我的代码,以便我可以正确地将wParam
与虚拟键代码进行比较?
您
还需要检查WM_KEYDOWN,请参阅:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646268%28v=vs.85%29.aspx
至于你的错误,你忘记了.ToInt32()!还要检查0x70(小写 p),