怎样屏蔽掉Dialog的关闭快捷键Escape? 重载函数PreTranslateMessage(),在其中处理Escape键 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载OnCancel(), return FALSE; 中载OnCancel()不行!Dialog的关闭(就是右上角的小叉)式Dialog生成是默认的快捷键Escape!TigerHu: Key Hook是什么意思?能具体说一下吗?谢谢大家了! PreTranslateMessage(...) { if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case VK_ESCPAE:return TRUE;} BOOL CXXXXX::PreTranslateMessage(MSG* pMsg) { switch(pMsg->message) { case WM_KEYUP: switch(pMsg->wParam) { //处理Escape键的消息 case VK_ESCAPE: return FALSE; default: break; } break; default: break; } return CDialog::PreTranslateMessage(pMsg);} OnCancel()是void类型,不需要返回值,总不能不让他返回到 CDialog::OnCancel();吧? 呵呵,慢了57秒,不过我处理的是KeyUp :) 在PreTranslateMessage中if( WM_KEYDOWN == pMsg->message) if( VK_ESCAPE == pMsg->wParam ) return TRUE;......已经测试,可以解决你的问题 mefish: 不能再Dialog类中重载吧!应该在App中吗?在Dialog中不响应啊! 不是在App中,在你的自己的那个从CDialog继承的dialog类里。比如说class CStartInfo : public CDialog{...// Implementationprotected: // Generated message map functions //{{AFX_MSG(CStartInfo) virtual void OnCancel(); virtual void OnOK(); //}}AFX_MSG DECLARE_MESSAGE_MAP()}; 然后在你的Cpp文件中的void CStartInfo::OnCancel(){ //do nothing}还有一个比较简单的方法就是在你的对话框里放置一个ID为IDCANCEL的按钮,将其属性设置为disabled,并去掉其可见属性,就能达到目的。 如何通过程序把网址添加到收藏夹中? 上位机软件开发的准备工作 如何向VC工程中添加自己写的类? 进程关闭问题 初学者的问题--怎么样把CRecordset返回的数据用CListCtrl显示出来? 感谢akiko帮我解决问题! cfile.write() 怎样动态改变模式对话框的标题? 简单问题,为什么列表框中的水平滚动条没有起作用?!!!!!!!! 要做个 和称重显示器连接的程序(通过RS232C同串口相连) 需要解决那些问题 up有分: vc中文本显示如何实现超级连接的的下划线 各位大虾请指点谜经
TigerHu: Key Hook是什么意思?能具体说一下吗?谢谢大家了!
if(pMsg->message == WM_KEYDOWN) {
switch(pMsg->wParam) {
case VK_ESCPAE:
return TRUE;
}
{
switch(pMsg->message)
{
case WM_KEYUP:
switch(pMsg->wParam)
{
//处理Escape键的消息
case VK_ESCAPE:
return FALSE;
default:
break;
}
break;
default:
break;
}
return CDialog::PreTranslateMessage(pMsg);
}
if( VK_ESCAPE == pMsg->wParam )
return TRUE;
...
...已经测试,可以解决你的问题
class CStartInfo : public CDialog
{
...
// Implementation
protected: // Generated message map functions
//{{AFX_MSG(CStartInfo)
virtual void OnCancel();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
void CStartInfo::OnCancel()
{
//do nothing
}还有一个比较简单的方法就是在你的对话框里放置一个ID为IDCANCEL的按钮,将其属性设置为
disabled,并去掉其可见属性,就能达到目的。