方法:
- 对可编辑多行的CEdit时,需要选中Want Return属性
- 若是单行的CEdit,需要重载OnOK()和ONCancel()
- 拦截回车键消息
将CEdit控件的属性 Multiline 和 Want return 选中
我以前刚学的时候也是遇到这样的问题,身边又没有人会MFC,(更没有优快云了)那时可是很郁闷啊。现在的学生可真幸福啊,呵呵。其实原因很简单:因为当你按下了回车时,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);
}