win32 模态对话框的键盘输入处理

runtheway 2006-08-17 02:02:32
我有这样一个问题:
我创建了一个菜单,菜单第一项的快捷键是1,相应的处理函数是弹出一个模态对话框(win32写的),我在对话框的WM_INITDIALOG消息处理中对于这个对话框的一个自控件写了个子类化的处理(主要处理了按键消息),
问题:我按下菜单得快捷键1时,对话框也捕获到了这个按键,
这种情况如何处理?
...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerry 2006-08-17
  • 打赏
  • 举报
回复
BYTE kb[256];
while(GetKeyboardState(bk))
{
if(!is_any_key_down(bk))
break;
Msg msg;
if(PeekMessage(&msg,NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

}

CPopupDlg dlg;

dlg.DoModal();


...

BOOL is_any_key_down(BYTE[] pb)
{
for(int i = 0; i < 256; i++)
if(pb[i]&0x80) return TRUE;
return FALSE;
}

试试
runtheway 2006-08-17
  • 打赏
  • 举报
回复
消息继续传递,
如果我不用子类化那种方法捕获消息的话,换种方式让模态对话框去捕获按键消息,还会有这种现象存在吗?
浪子有解决方法的示例代码看下吗?
healer_kx 2006-08-17
  • 打赏
  • 举报
回复
消息继续传递。
jerry 2006-08-17
  • 打赏
  • 举报
回复
在处理菜单消息的函数里,检测键盘。如果有键按下就等待,直到所有的键释放后再弹出对话框

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧