视图View的OnKeyDown消息 MFC单文档程序,我在视图上放了一个子对话框。为什么焦点在对话框上的控件上时,View类不响应OnKeyDown消息??怎么让无论焦点在哪,View都能响应OnKeyDown消息??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种情况下,截取消息呀!截取所有的keydown消息!得到有用的 重载 virtual BOOL PreTranslateMessage(MSG* pMsg);在里面if(pMsg->message==WM_KEYDOWN){} 不好意思,我还是不明白View的PreTranslateMessage(MSG* pMsg)还是子对话框的PreTranslateMessage(MSG* pMsg)??? 那还用View的OnKeyDown消息响应函数吗? 用这个,你已经得到了你的消息,所以,不用OnKeyDown,完全可以的! 我试了,点击对话框上的控件后,View的PreTranslateMessage不响应 BOOL CXXView::PreTranslateMessage(MSG* pMsg){ if(WM_KEYDOWN = pMsg->message) { // Handler WM_KEYDOWN // If you handle this messsage and not to continue, please return TRUE directly. } return CView::PreTranslateMessage(pMsg);} 点击了对话框上的控件后,再按键进不到View的PreTranslateMessage里 那你就在对话框中处理,然后转发给View类 GetParent()->PostMessage/SendMessage(WM_KEYDOWN, ...); 消息传过去了。可是还有一个奇怪的现象,我想在CXXView::PreTranslateMessage(MSG* pMsg)里处理方向键按下的消息,不响应,前面加了个MessageBox就响应了。好奇怪啊!怎么回事? 代码是这样的BOOL CARappView::PreTranslateMessage(MSG* pMsg) { if( pMsg->message==WM_KEYDOWN ) { MessageBox("View KeyDown");//不加这句,按右键不弹出“Right”;加上这句,第一次按右键不弹出“Right”,之后再按才弹出“Right” switch( pMsg->wParam ) { case VK_RIGHT: MessageBox("Right"); break; case VK_LEFT: break; case VK_UP: break; case VK_DOWN: break; } } return CView::PreTranslateMessage(pMsg);} 对话框导致程序退出出错 在msdn2004为什么查不到CString? 如何实现记录上一条、下一条翻页 如何让编辑框支持拖拽文本 MS REMOTEDATA CTL或DBGRID控件的接口问题? 我用APPWIZARD生成的单文档窗体有没有ID属性???是什么??? vc++中的类在那找? x文件的载入问题 请牛人们帮帮忙。 在右击菜单显示的情况下焦点问题~~~ VC动态创建的标签(CStatic)怎么改变颜色 MFC图片
截取所有的keydown消息!得到有用的
在里面
if(pMsg->message==WM_KEYDOWN)
{}
View的PreTranslateMessage(MSG* pMsg)还是子对话框的PreTranslateMessage(MSG* pMsg)???
那还用View的OnKeyDown消息响应函数吗?
我试了,点击对话框上的控件后,View的PreTranslateMessage不响应
{
if(WM_KEYDOWN = pMsg->message)
{
// Handler WM_KEYDOWN
// If you handle this messsage and not to continue, please return TRUE directly.
}
return CView::PreTranslateMessage(pMsg);
}
点击了对话框上的控件后,再按键进不到View的PreTranslateMessage里
消息传过去了。可是还有一个奇怪的现象,我想在CXXView::PreTranslateMessage(MSG* pMsg)里处理方向键按下的消息,不响应,前面加了个MessageBox就响应了。好奇怪啊!怎么回事?
BOOL CARappView::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message==WM_KEYDOWN )
{
MessageBox("View KeyDown");//不加这句,按右键不弹出“Right”;加上这句,第一次按右键不弹出“Right”,之后再按才弹出“Right”
switch( pMsg->wParam )
{
case VK_RIGHT:
MessageBox("Right");
break;
case VK_LEFT:
break;
case VK_UP:
break;
case VK_DOWN:
break;
}
}
return CView::PreTranslateMessage(pMsg);
}