/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_ACCELERATOR ACCELERATORS
BEGIN
VK_F2, IDM_NEW, VIRTKEY, NOINVERT
END
在资源中添加了accelerator编译后运行按F2没有效果。
在网络上搜索后发现有修改注册表的解决办法,但是没有解决问题。
后来发现是窗口过程处理WM_COMMAND的问题
switch (message)
{
case WM_COMMAND:
if (lParam)
{//...
}
else
{
switch (wParam)
{
case IDM_NEW:
restart (hwnd) ;
return 0 ;
}
}
}
加速键发送的WM_COMMAND消息wParam高位为1, 而菜单命令相对应的高位为0。
所以应改为switch (LOWORD (wParam))来使加速键生效。