基于对话框的程序,按ESC就退出了? 基于对话框的程序,一按ESC就退出,请问怎么处理才能不退出,重载ONCHAR、KEYDOWN等消息没用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载PreTranslateMessage函数,处理Esc消息。 重载 OnCancel()函数!基于对话框的程序,当用户按下Esc后,会调用OnCancel()函数重载后,不调用 CDialog::OnCancel()就可以了 最好是重载PreTranslateMessage函数,处理Esc消息,而不是重载 OnCancel()函数因为重载 OnCancel()函数和重载PreTranslateMessage函数是有区别的。以下是最明显的区别:关闭对话框的叉,响应的也是OnCancel,如果重载OnCancel,那么按叉也关闭不掉了。而在PreTranslateMessage函数,处理Esc消息。则只是对Esc起作用。以下是方法:BOOL CXXXX::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg->message == WM_KEYDOWN) { int keyvalue = pMsg->wParam; if(keyvalue==VK_ESCAPE) { return 1; } } return CYYYY::PreTranslateMessage(pMsg);} 你的对话框类中有一个OnCancel函数。在可视化资源编辑环境下,双击“取消”按纽,进入OnCancel()函数,将MFC自动生成的代码全删掉,如下!void CXXXDlg::OnCancel(){} 难道大家没遇到过这个问题吗是人都碰过该死的MFC,想到这个问题我都要骂人 楼上的,切忌心浮气躁呀!这个问题的解决方案实在太多了:OnSysCommand OnCancel PretranslateMessage WindProc 等等地方都可以解决。另外,这可不关MFC太多问题呀,呵呵! 把OnCancel()函数里面的内容清掉就可以了! case WM_KEYDOWN: // Is A Key Being Held Down? { if[wParam] == VK_ESCAPE PostQuitMessage(0); // If So, Mark It As TRUE return 0; // Jump Back } 重载OnCancel()至于按关闭按钮不能光比对话框可以这么解决,重载OnClose()调用 CDialog::OnCancel() flashzf() ( ) 正确。 如何让一个对话框程序在双击运行后直接最小化? vc的编辑框内容的更新与发送 CStatic派生类 位置问题 获取tab ctrl子页面内容,急啊~~ 将 edit中 显示的串 用UE的方式 显示 【求助】我在调试程序的时候,在程序关闭时,有错误框闪过就消失了,怎么让这个错误框显示出来 : 在vc里转义怎么写? 用raw socket中编程实现C/S的问题,如何实现,哪里有这样的源码吗? 请问为什么打印会出现这样的问题? 内存明明是足够的,但new BYTE[count]总是不成功! =====问一个制作CHM文档的问题====== 请看,这个连接问题,我经常遇到,到今天还没解决。
基于对话框的程序,当用户按下Esc后,会调用OnCancel()函数
重载后,不调用 CDialog::OnCancel()就可以了
因为重载 OnCancel()函数和重载PreTranslateMessage函数是有区别的。
以下是最明显的区别:
关闭对话框的叉,响应的也是OnCancel,如果重载OnCancel,那么按叉也关闭不掉了。
而在PreTranslateMessage函数,处理Esc消息。则只是对Esc起作用。
以下是方法:
BOOL CXXXX::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
int keyvalue = pMsg->wParam;
if(keyvalue==VK_ESCAPE)
{
return 1;
}
}
return CYYYY::PreTranslateMessage(pMsg);
}
在可视化资源编辑环境下,双击“取消”按纽,进入OnCancel()函数,将MFC自动生成的代码
全删掉,如下!
void CXXXDlg::OnCancel()
{}
是人都碰过
该死的MFC,想到这个问题我都要骂人
这个问题的解决方案实在太多了:OnSysCommand OnCancel PretranslateMessage WindProc 等等地方都可以解决。
另外,这可不关MFC太多问题呀,呵呵!
{
if[wParam] == VK_ESCAPE
PostQuitMessage(0); // If So, Mark It As TRUE
return 0; // Jump Back
}
调用 CDialog::OnCancel()