首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

热键的奇怪有关问题:明明设置成 ALT+Z,注册的却是 SHIFT+Z ,如果设成 SHIFT+Z,注册的变成ALT+Z

2012-03-09 
热键的奇怪问题:明明设置成 ALT+Z,注册的却是 SHIFT+Z ,如果设成 SHIFT+Z,注册的变成ALT+Z热键的奇怪问题:

热键的奇怪问题:明明设置成 ALT+Z,注册的却是 SHIFT+Z ,如果设成 SHIFT+Z,注册的变成ALT+Z
热键的奇怪问题:明明设置成   ALT+Z,注册的却是   SHIFT+Z   ,如果设成   SHIFT+Z,注册的变成ALT+Z。

也就是说,Shift和Alt总反过来了。

下面是我的代码:
wHotKey   =   (WORD)SendMessage(hHkHide,   HKM_GETHOTKEY,   0,   0);
if   (wHotKey   !=   0)
RegisterHotKey(g_hWnd,   1001,   HIBYTE(wHotKey),   LOBYTE(wHotKey));
else
UnregisterHotKey(g_hWnd,   1001);

搜索网络近3个小时了,也无法解决。
到底是什么原因?如何解决?
请高手指示,急啊。
真不理解。
另,当设置完热键并将wHotKey写到ini后,下次读取时,可以正常的在HotKey控件里显示相应的热键。我想问题应该是出在:HIBYTE(wHotKey),但网上相关资料都是这么写的。
另,也试了:(byte)((wHotKey   > >   8)   &   0xFF),也   HIBYTE   宏一样。

[解决办法]
RegisterHotKey(g_hWnd, 1001, HIBYTE(wHotKey), LOBYTE(wHotKey));
改为下面的试试:
RegisterHotKey(g_hWnd, 1001, HIWORD(wHotKey), LOWORD(wHotKey));
[解决办法]
解决不了就trick一下,在程序里写个判断自己把Shift和ALT换过来
[解决办法]
// 交换热键
UINT SwapShiftAlt(UINT iHotKey)
{
if (iHotKey & HOTKEYF_SHIFT && iHotKey & HOTKEYF_ALT)
{
}
else if (iHotKey & HOTKEYF_ALT)
{
iHotKey -= 3;
}
else if (iHotKey & HOTKEYF_SHIFT)
{
iHotKey += 3;
}
return iHotKey;
}

热点排行