一个对话框程序,我不要上面的确定和取消按钮,但是运行起来后,我按一下回车,这个程序就关闭了,我现在想按回车程序不关闭,怎么办? 重载OnOK()函数里面什么语句都不要写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你重载ONOK()函数就可以了,并在类向导里把函数该为你的。 重载OnOK()函数----->>>>>是不是还要在对话框上面放一个按钮?选择这个按钮的ID为:IDOK?然后把CDialog::OnOK();注释掉啊?这样是可以 但是我现在是不需要这个按钮啊 不是,你先选中ID_OK的按牛,在 CTRL+W,添加OnOK(),搞定 添加下面的事件处理就ok了BOOL CCMPPGATEDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if( pMsg->message==WM_KEYDOWN ) if( (pMsg->wParam==VK_ESCAPE)||(pMsg->wParam==0x0d) ) return true; return CDialog::PreTranslateMessage(pMsg);} zhuwenzheng():我的对话框上面一个按钮也没有,我怎么选中按钮啊? 你是不想回车时,关闭程序?你把OK按钮的DEFULT BUTTON 去掉,步骤:OK按钮右键弹出菜单中选择属性,在属性对话框的STYTLE中有DEFULT BUTTON 复选,去掉钩钩就可以了 不选按牛,直接对DIALOG重载ONOK zhuwenzheng():我就是不知道,不选按钮时怎么重载啊,右击类,Add virtual function里,没有onok啊? ndsm, 不会吧哥们儿,我上面写的那段程序肯定没问题,我每次都这么用的,百试不爽啊!!! f_ky(开开):不好意思,老大,你的肯定对,我现在不会 "不选按牛,直接对DIALOG重载ONOK" 自己动手重载OnOK()函数,在Dialog类中填加一个OnOK函数就可以了,函数的说明看一下MSDN中的CDialog::OnOK()的说明。 lanfan(蓝色的帆) f_ky(开开):onok不是虚函数吗?在classview中,怎么不好通过点点鼠标,就给我把这个虚函数给重载呢?我不是偷懒不肯手写,我是问为什么有的虚函数可以不要手写,通过点鼠标就可以重载。而这个虚函数就不行呢? 你也可以在classview中找到对应的消息,重载它就可以了,好象是WM_OK也许是其他的什么:)我记不清了,反正没有就自己写,自己动手丰衣足食:) 更改你的PretranslateMessage函数啊BOOL CMyDlg::PreTranslateMessage(MSG* pMsg){ // CG: The following block was added by the ToolTips component. BOOL bHandledMsg = FALSE; switch (pMsg->message) { case WM_KEYDOWN: { switch (pMsg->wParam) { // hitting escape while searching for password edits // should only stop the search for password edits and // not kill app case VK_ESCAPE://ESC键 bHandledMsg = TRUE;break; case 13://回车 bHandledMsg = TRUE;break; default: break; } // switch (pMsg->wParam) } break; default: break; } // switch (pMsg->message) return (bHandledMsg ? TRUE : CDialog::PreTranslateMessage(pMsg)); 从方法上讲我还是觉得用PreTranslateMessage(MSG* pMsg)更好,因为他能处理多种消息。但是要讲最快的方法呢,我觉得还有一种方法也能说得过去,就是把OK按钮的属性“Visible”去掉,并且把IDOK消息处理函数中的CDialog::OnOK();注释掉。 pdflib6.0 不支持输出繁体中文 如何禁止IE滚动条 关于VS2005和VS2008 大家开发项目是单干还是用版本库大家一起搞啊? 散分帖 祝自己生日快乐 本人想利用PostMessage在不同的进程之间传递数据? winsock是用多线程好呢还是用异步I/O好? 求助!向oracle数据库中写字符信息时出错 CRichEditCtrl 如何插入多行字符串? 如何让滚动条始终滚在最下方? 关于打开文件夹的一个小问题,全天在线,解决问题,立即加分! com的数据类型转换搞得我烦死了,date如何赋值啊? 如何对ListCtrl的指定行的文字列改变颜色?
按钮的ID为:IDOK?然后把CDialog::OnOK();注释掉啊?这样是可以 但是
我现在是不需要这个按钮啊
BOOL CCMPPGATEDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg->message==WM_KEYDOWN )
if( (pMsg->wParam==VK_ESCAPE)||(pMsg->wParam==0x0d) )
return true;
return CDialog::PreTranslateMessage(pMsg);
}
我的对话框上面一个按钮也没有,我怎么选中按钮啊?
你把OK按钮的DEFULT BUTTON 去掉,
步骤:OK按钮右键弹出菜单中选择属性,
在属性对话框的STYTLE中有DEFULT BUTTON 复选,
去掉钩钩就可以了
我就是不知道,不选按钮时怎么重载啊,右击类,Add virtual function
里,没有onok啊?
不好意思,老大,你的肯定对,
我现在不会 "不选按牛,直接对DIALOG重载ONOK"
把这个虚函数给重载呢?我不是偷懒不肯手写,我是问为什么有的
虚函数可以不要手写,通过点鼠标就可以重载。而这个虚函数就不行呢?
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
// CG: The following block was added by the ToolTips component.
BOOL bHandledMsg = FALSE; switch (pMsg->message)
{
case WM_KEYDOWN:
{
switch (pMsg->wParam)
{
// hitting escape while searching for password edits
// should only stop the search for password edits and
// not kill app
case VK_ESCAPE://ESC键
bHandledMsg = TRUE;break;
case 13://回车
bHandledMsg = TRUE;break;
default: break;
} // switch (pMsg->wParam)
}
break;
default:
break;
} // switch (pMsg->message) return (bHandledMsg ? TRUE : CDialog::PreTranslateMessage(pMsg));