您的位置:首页 > 其它

怎么让对话框dialog里面的cedit控件对于回车不感冒?

2009-05-25 22:38 295 查看
方法:

对可编辑多行的CEdit时,需要选中Want   Return属性

若是单行的CEdit,需要重载OnOK()和ONCancel()

拦截回车键消息

 

将CEdit控件的属性 Multiline 和 Want  return 选中

 

我以前刚学的时候也是遇到这样的问题,身边又没有人会MFC,(更没有CSDN了)那时可是很郁闷啊。现在的学生可真幸福啊,呵呵。其实原因很简单:因为当你按下了回车时,WINDOWS查看当前输入焦点,如不在按钮上,再看哪个按钮是默认的(资源编辑器按钮中的default属性)。如果连默认按钮都没有,应用程序框架就把消息传给对话框的OnOK()虚函数。所以,只要你把这个函数重载一下,就可以了。基本上和那位MS   MVP讲的差不多。  
          具体方法如下:  
  1。去掉OK按钮的默认属性。  
  2。为OK按钮添加消息处理函数。OnOK()  
  3。将OnOK中CDIalog::OnOK()去掉//如果你的对话框类直接继承自CDialog  
  4。将OK按钮ID重命名一般改为IDC_OK  
  5。为OK按钮重新添加消息处理函数。一般命名为OnClickedOK()这里是真正的处理按钮被按下的函数。  
  这样就可以了

 

 

这个问题我开始的时候也碰到了,好象是和程序的键盘响应函数有关的  
  这个是在类向导里面Message里面添加该函数的  
  BOOL   CServerDlg::PreTranslateMessage(MSG*   pMsg)    
  {  
  //   TODO:   Add   your   specialized   code   here   and/or   call   the   base   class  
     if(pMsg->message   ==   WM_KEYDOWN   &&   pMsg->wParam   ==   VK_RETURN)

    {  
       //在这里添加你要程序在接受到键盘消息后的动作  
       return   TRUE;  
     }  
   
   return   CDialog::PreTranslateMessage(pMsg);  
  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dialog mfc windows class 框架