请问是否可以在主对话中拦截子对话框的消息,并将其销毁 我程序中一个主对话框中包含一大堆不动子对话框,用于显示一些信息,但这些子对话框都接收回车、esc、ALT+F4等等可以直接关闭的消息,请问是否有一些简单的方法将这些东东去掉? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用定时器,如果你的子对话框是模态,超时后给该对话框发IDOK或IDCANCEL消息,非模态就ShowWindow(SW_HIDE)。 重载OnOK,OnCancel,可以解决回车和esc的问题 如果当前活动窗口是主窗口,可以在PreTranslateMessage中过滤消息。子对话框也可以在PreTranslateMessage中过滤回车、esc、ALT+F4等等消息 同志们,我是想在主窗口中拦截主窗口中子窗口的回车、esc、ALT+F4消息,这样可以在子窗口类中不用对回车、esc、ALT+F4进行一一重复处理 BOOL CMyAAADlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_KEYDOWN) { if( pMsg->wParam == VK_RETURN ) return TRUE; if( pMsg->wParam == VK_ESCAPE ) return TRUE;CString sss;sss.Format("%d",pMsg->wParam);MessageBox(sss); } return CDialog::PreTranslateMessage(pMsg);}但我觉得这样就可以使子窗口有响应VK_RETURN 和VK_ESCAPE 呀可是不可以请大家帮忙呀 我想自定义一个由CDialog继承来的类,以后的子对话框类都由这个类继承,但用向导建立的新的子对话框只能由CDialog继承,不能由定义对话框继承,如果由手工改动就会出现很多无法解释的错误请高手帮帮我呀 试试这个:if(pMsg->message==WM_KEYDOWN){//hWndChildDlg1为你要过滤消息的子窗口句柄 if( pMsg->hWnd == hWndChildDlg1) { if( pMsg->wParam == VK_RETURN ) return TRUE; if( pMsg->wParam == VK_ESCAPE ) return TRUE; CString sss; sss.Format("%d",pMsg->wParam); MessageBox(sss); }} 就是把你那些需要显示的子窗体都重载OnClose和OnOK 建意还是使让对话框由CDialog继承,如果共同的风格比较多且有组合的余地,则可以使用同一个对话框,其处理内容在对话框类里实现,这样作的代价会相对小一些,也是可行的。相信你可以轻面易举的把二十多个对话框变成五六个功能化的对话框,或者会更少 恭喜VisualEleven升任VC/MFC版大版主 Cachieve的使用 一个简单的CString.format的问题 怎样实现图片的打印预览功能?(急用,在线等待) 哪位做过RSS方面的开发,最好是VC方面的。。 求救:一个math.sin()的问题 请问如何在一个对话框上任意位置输出字符(不用控件)?? 怎样清除键盘缓冲区内容? 怎么把标题栏去掉,换成自己的。 help!!!!!!!!!!!!!!! 创建窗口有没有类似于对话框的WM_INITDIALOG消息? 谁有关于河道横截面的位图?就和黄河那样的,水坝的也行
{
if(pMsg->message==WM_KEYDOWN)
{
if( pMsg->wParam == VK_RETURN )
return TRUE;
if( pMsg->wParam == VK_ESCAPE )
return TRUE;
CString sss;
sss.Format("%d",pMsg->wParam);
MessageBox(sss);
}
return CDialog::PreTranslateMessage(pMsg);
}
但我觉得这样就可以使子窗口有响应VK_RETURN 和VK_ESCAPE 呀可是不可以请大家帮忙呀
if(pMsg->message==WM_KEYDOWN)
{//hWndChildDlg1为你要过滤消息的子窗口句柄
if( pMsg->hWnd == hWndChildDlg1)
{
if( pMsg->wParam == VK_RETURN )
return TRUE;
if( pMsg->wParam == VK_ESCAPE )
return TRUE;
CString sss;
sss.Format("%d",pMsg->wParam);
MessageBox(sss);
}
}