请问:一个Dialog的程序,release版本如何才能在按"Enter"和"Esc"时不退出程序。

jyojyo 2003-01-26 02:45:22
请问:一个Dialog的程序,release版本如何才能在按"Enter"和"Esc"时不退出程序。
...全文
17 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qrlvls 2003-02-07
  • 打赏
  • 举报
回复
在PreTranslateMessage时,搞定咯
判断消息是否WM_KEYDOWN
判断msg.wParam 是否为VK_RETURN VK_ESCAPE
如果是就直接返回,否则调用默认处理过程
wjyasd 2003-02-07
  • 打赏
  • 举报
回复
void CABCDlg::OnOK()
{
// TODO: Add extra validation here
CPoint pt;
CRect rect;

GetCursorPos(&pt);
GetDlgItem(IDOK)->GetWindowRect(&rect);

if(!rect.PtInRect(pt))
return;
else
CDialog::OnOK();
}

// 另一个函数同理!
wjyasd 2003-02-07
  • 打赏
  • 举报
回复
当你想 通过 OK CANCEL 按牛返回 的时候却不起做用了! :(

还是判断一下当前的光标是否在 OK,CANCEL 按牛上方把!

不要直接屏蔽 CDialog::OnOK() and CDialog::OnCancle();
duncanliu 2003-02-06
  • 打赏
  • 举报
回复
多谢楼上补充
GoldenSword 2003-02-06
  • 打赏
  • 举报
回复
回复人: songshouding(宋守定)说得对,因为默认按钮是OnOK和OnCancel
qrlvls 2003-01-26
  • 打赏
  • 举报
回复
同意楼上,但是不是直接返回

switch(msg.message)
{
case WM_KEYDOWN:
switch(msg.wParam)
{
case VK_RETURN:
case VK_ESCAPE:
return true;
}
}
duncanliu 2003-01-26
  • 打赏
  • 举报
回复
重载函数CABCDlg::PreTranslateWindow()
改为
CABCDlg::PreTranslateWindow(...)
{
return TRUE;
}
songshouding 2003-01-26
  • 打赏
  • 举报
回复
void CABCDlg::OnOK()
{
// TODO: Add extra validation here

// CDialog::OnOK();
}

void CABCDlg::OnCancel()
{
// TODO: Add extra cleanup here

// CDialog::OnCancel();
}
将CDialog::OnOK()和CDialog::OnCancel()注释掉,想关闭时再调用

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧