为什么回车都会关闭窗口 我用MFC编程,所有对话框都是一按下回车键就会关闭,即使焦点在单行文本框时也不例外. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 OnOk(){//CDialog::OnOk;return;} 右击按钮,属性->style里,有一个“Default button”项,去掉该选项 因为回车响应onok(),ESC响应ONCANCEL()你可以重载他们,或者重载pretranslate() 重载OnOKvoid CMyDlg::OnOK(){} 楼主:楼上的怎会来晚呢?他们都不能很好解决问题.如果重载以下函数:// 1OnOk(){//CDialog::OnOk;return;}// 2OnCancel(){//CDialog::OnOk;return;}程序将不能关闭!PreTranslateMessage( MSG* pMsg );谁来介绍一下这个函数.我想处理"回车键"和"Esc"键. 最简单的方法还是重载onok()和oncancel(),然后处理void CSIMTOOLDlg::OnSysCommand(UINT nID, LPARAM lParam){ switch(nID) { case SC_MINIMIZE: ShowWindow(SW_HIDE); break; case 61536: // 关闭窗口 if (MessageBox("确定要退出此软件?", "AWS",MB_YESNO|MB_ICONQUESTION) == IDNO) { return; } CDialog::OnOK(); break; default: CDialog::OnSysCommand(nID, lParam); break; }} PreTranslateMessage( MSG* pMsg );也是可以的,在MSDN重于对应的键盘事件的参数 按下回车会触发对话框的默认函数ON_OK所以会关闭对话框只需要重载该函数什么都不做就可以了esc键也用此方法屏蔽 重载OnKeyDown消息,当回车按下时不调用基类的OnKeyDown过程就可以了。 另一种方法:重载OnOk(),OnCancel(),OnExit()void CMyDlg::OnOK(){}void CMyDlg::OnCancel(){}void CMyDlg::OnExit(){ CDialog::OnOk();} 另一种方法:重载OnOk(),OnCancel(),OnExit()void CMyDlg::OnOK(){}void CMyDlg::OnCancel(){}void CMyDlg::OnClose(){ CDialog::OnOk();}不好意思,写错了:) 楼主:PreTranslateMessage( MSG* pMsg );谁来介绍一下这个函数的用法.我想处理"回车键"和"Esc"键. ADO MFC添加和修改的疑惑 如何连接局域网内的sql server数据库? VS2008默认的菜单显示很模糊,如何修改菜单字体? 请问我在编译CPP_UNIT_TEST时为什么会出现以下错误 mediaplayer control全屏问题 怎样设置CListBox的颜色?在线等 关于阻塞非阻塞同步与异步的几个问题,欢迎大家讨论!!!!人人有分 如何在ComboBox中加入内容 谁有类似变速齿轮的源代码? www.csdn.net/editor1/editor.htm 用什么写的 那位朋友用TAPI搞过开发,请传授小弟一些经验 一个DLL的问题,继承dll里定义的类.
{
//CDialog::OnOk;
return;
}
void CMyDlg::OnOK()
{
}
他们都不能很好解决问题.如果重载以下函数:
// 1
OnOk(){
//CDialog::OnOk;
return;
}
// 2
OnCancel(){
//CDialog::OnOk;
return;
}程序将不能关闭!PreTranslateMessage( MSG* pMsg );
谁来介绍一下这个函数.
我想处理"回车键"和"Esc"键.
void CSIMTOOLDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
switch(nID)
{
case SC_MINIMIZE:
ShowWindow(SW_HIDE);
break;
case 61536: // 关闭窗口
if (MessageBox("确定要退出此软件?", "AWS",MB_YESNO|MB_ICONQUESTION) == IDNO)
{
return;
}
CDialog::OnOK();
break;
default:
CDialog::OnSysCommand(nID, lParam);
break;
}
}
也是可以的,在MSDN重于对应的键盘事件的参数
所以会关闭对话框
只需要重载该函数
什么都不做就可以了
esc键也用此方法屏蔽
重载OnOk(),OnCancel(),OnExit()
void CMyDlg::OnOK()
{
}
void CMyDlg::OnCancel()
{
}
void CMyDlg::OnExit()
{
CDialog::OnOk();
}
重载OnOk(),OnCancel(),OnExit()
void CMyDlg::OnOK()
{
}
void CMyDlg::OnCancel()
{
}
void CMyDlg::OnClose()
{
CDialog::OnOk();
}不好意思,写错了:)
PreTranslateMessage( MSG* pMsg );
谁来介绍一下这个函数的用法.
我想处理"回车键"和"Esc"键.