MFC无法响应键盘方向键问题
2014-12-02 13:30
204 查看
在做MFC小游戏过程中,响应方向键一个方法。
方向键码值:
VK_UP
VK_DOWN
VK_LEFT
VK_RIGHT
在程序中重载了OnChar()函数,以及OnPretranslateMessage(),OnKeyDown(),调试发现,按方向键后,并不执行这些函数。暂时还不清楚什么原因,希望博友们可以知道告诉一下我。
这里想出了一个解决办法:注册热键的方式
1. 重载OnInitDialog()
hwnd 对话框句柄
id 热键的标示号
fsmodifiers 组合键选择(这里设为NULL)
vk 键值
::OnInitDialog()
{
....
....
RegisterHotKey(m_hWnd,1,NULL,VK_UP);
RegisterHotKey(m_hWnd,2,NULL,VK_DOWN);
RegisterHotKey(m_hWnd,3,NULL,VK_LEFT);
RegisterHotKey(m_hWnd,4,NULL,VK_RIGHT);
....
}
2.重载OnHotKey()
::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
switch (nHotKetld)
{
case 1:break;
case 2:break;
...
}
....
}
这样就可以响应方向键了。
方向键码值:
VK_UP
VK_DOWN
VK_LEFT
VK_RIGHT
在程序中重载了OnChar()函数,以及OnPretranslateMessage(),OnKeyDown(),调试发现,按方向键后,并不执行这些函数。暂时还不清楚什么原因,希望博友们可以知道告诉一下我。
这里想出了一个解决办法:注册热键的方式
1. 重载OnInitDialog()
BOOL RegisterHotKey( HWND hWnd, int id, UINT fsModifiers, UINT vk );
hwnd 对话框句柄
id 热键的标示号
fsmodifiers 组合键选择(这里设为NULL)
vk 键值
::OnInitDialog()
{
....
....
RegisterHotKey(m_hWnd,1,NULL,VK_UP);
RegisterHotKey(m_hWnd,2,NULL,VK_DOWN);
RegisterHotKey(m_hWnd,3,NULL,VK_LEFT);
RegisterHotKey(m_hWnd,4,NULL,VK_RIGHT);
....
}
2.重载OnHotKey()
::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
switch (nHotKetld)
{
case 1:break;
case 2:break;
...
}
....
}
这样就可以响应方向键了。
相关文章推荐
- OGRE缓冲鼠标键盘输入无法响应的问题
- 关于Cocos2D-X 3.10在android平台上使用外接键盘无法响应的问题
- MFC中键盘响应的两个问题
- minicom for linux键盘无法响应问题解决
- MFC响应键盘方向键消息
- 焦点在子Activity的listView时ActivityGroup无法响应Menu键的问题
- 对话框程序无法响应菜单更新的问题
- 键盘事件的响应(方向键)
- ACE Proactor无法持续响应udp报文的问题
- 在VC/MFC中响应键盘按键
- 关于MySQL 最后一部安装阶段无法响应的问题
- 解决对话框内工具栏对象无法响应ON_UPDATE_COMMAND_UI的问题
- 解决GridView中嵌入CheckBox,事件无法响应的问题
- [经验总结]解决MFC 进度条无响应的问题
- MFC 键盘响应事件
- Vmware 7.0安装Ubuntu10.04 键盘无法输入问题解决方案
- ASP.NET中自定义控件无法响应事件的问题
- vs2005编译的release MFC程序无法在未安装2005的机器上使用的问题解决
- 求助帮忙 MFC游戏上人物移动代码 响应键盘多个事件一起发生
- MFC单文档程序添加消息映射和消息响应函数的问题