在CDialog中,如何使按“ESC” 回车键 失效

本文介绍如何在对话框中禁用ESC和Enter键的功能,包括重载OnOK()和OnCancel()函数来阻止默认行为,并提供了一种方法来确保即使这两种按键都被禁用时,用户仍能通过点击关闭按钮来退出对话框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 使回车键失效:重载OnOK()函数  
  afx_msg   void   OnOK();  
   
  void   CTestDlg::OnOK()  
  {  
      可以不写任何代码  
  }  
   
  使ESC失效:重载   OnCancel()  
  afx_msg   void   OnCancel();  
  void   OnCancel()  
  {  
  }  
   
  如果同时使ESC和ENTER键失效了,窗口好象就不能关闭了,点击X按钮也不行,这时建议你在
void   CClockDlg::OnSysCommand(UINT   nID,   LPARAM   lParam)  
  {  
  if   ((nID   &   0xFFF0)   ==   IDM_ABOUTBOX)  
  {  
  CAboutDlg   dlgAbout;  
  dlgAbout.DoModal();  
  }  
  else   if(nID   ==   SC_CLOSE)  
  OnExit();       //加入这两行,自行处理关闭窗口  
  else  
  {  
  CDialog::OnSysCommand(nID,   lParam);  
  }  
  }

重载PreTranslateMessage()函数。  
  如下:  
  BOOL   CTest1Dlg::PreTranslateMessage(MSG*   pMsg)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
  BOOL   bHandleMsg=FALSE;  
  if(VK_ESCAPE==pMsg->wParam)  
  bHandleMsg=TRUE;  
  return   (TRUE==bHandleMsg?TRUE:CDialog::PreTranslateMessage(pMsg));  
  }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值