假设我在我的应用程序中寻找键盘快捷键 Alt + C 。我相信我不能因为各种原因处理WM_KEYDOWN
,其中一个原因是它用于检测非系统密钥,并且没有特别告诉您 Alt 密钥。它只有一个1位的单位来告诉你是否按下任何扩展键和虚拟键。
我相信WM_CHAR
对我来说更适合我。我的问题是:
a)我的假设是正确的吗?
b)如何从wParam
获取字符代码并将其与 Alt + C 进行比较?
答案 0 :(得分:1)
答案 1 :(得分:0)
对于常规键盘快捷键处理,最好使用Control.ProcessCmdKey
覆盖。
在Win32中称为键盘加速器。
我没有Control.ProcessCmdKey
的直接经验,但看起来很容易。
Google搜索找到的示例: http://www.codeguru.com/columns/experts/article.php/c4639
protected override bool ProcessCmdKey( ref Message msg,
Keys keyData )
{
// Check this key...
bool bHandled = false;
// Look up value
Accelerators accel = Accelerators.Unspecified;
if ( _accelHash.ContainsKey(AcceleratorKey(keyData)) )
{
accel = (Accelerators)_accelHash[key];
switch ( accel )
{
case Accelerators.Home:
DisplayHome();
bHandled = true;
break;
case Accelerators.Save:
Save();
bHandled = true;
break;
case Accelerators.Print:
Print();
bHandled = true;
break;
case Accelerators.Logout:
LogOut();
bHandled = true;
break;
case Accelerators.Unspecified:
default:
break;
} // switch
} // if
return bHandled;
}