如何在对话框中响应回车键而不关闭对话框

解决方法:重载系统函数BOOL PreTranslateMessage(MSG *pMsg);

在该函数中做出对回车键的响应


/**************************设置对按键的响应***********************************/

BOOL CMain::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class

 /*************对回车键的响应****************/
 if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
 {
 
  if(pMsg->wParam==VK_RETURN) //这里是回车键的响应
   {
    UpdateData(TRUE);
    HWND hWnd = ::GetFocus();
    int iID = ::GetDlgCtrlID(hWnd);
    if( iID == IDC_XFH )
    {
    /*
     SendEditChatMsg(); //为要处理的数据函数
     IDC_XFH = "";
    */
     UpdateData(TRUE);
    }
   /*
    if( iID == IDC_EDITACTION )
       {
        
       }*/
   
    return TRUE;
   }
 /************************************************/ 
 }

 return CDialog::PreTranslateMessage(pMsg);
}
/**************************************************************************************/

 

第二种方法

屏蔽关闭  
  CMenu   *pSystemMenu=GetSystemMenu(FALSE);  
  pSystemMenu->DeleteMenu(8,MF_BYPOSITION);  
  pSystemMenu->DeleteMenu(7,MF_BYPOSITION);  
  pSystemMenu->DeleteMenu(5,MF_BYPOSITION);  
  pSystemMenu->DeleteMenu(4,MF_BYPOSITION);  
  pSystemMenu->DeleteMenu(3,MF_BYPOSITION);  
  pSystemMenu->DeleteMenu(2,MF_BYPOSITION);//好象是它,你试一下.

 

第三种方法

禁用关闭按钮可以在OnInitDialog   中   加入下面代码:  
  CMenu*   pSysMenu   =   GetSystemMenu(FALSE);  
  if   (pSysMenu   !=   NULL)  
  {  
        pSysMenu->DeleteMenu(SC_CLOSE,MF_BYCOMMAND);  
  }  
  重载对话框的OnOK函数,可以屏蔽回车键  
  void   CMyDlg::OnOK()  
  {  
  }  

禁止用ESC

基于对话框的应用程序如何屏蔽按ESC键关闭窗口  
   
  在BOOL   C***Dlg::PreTranslateMessage(MSG*   pMsg)中  
  if   (pMsg->message   ==   WM_KEYDOWN)  
  {  
          if   (pMsg->wParam   ==   VK_ESCAPE) //Esc键不退出程序  
  return   TRUE;  
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值