CEdit控件的回车事件

在VC中要响应一个CEdit控件的回车事件是一件非常复杂的事情。而且在回车事件触发后通常还会触发其他的一个事件,比如按钮的Click事件。
下面的例子进行如下操作:当在CEdit中按下回车的时候,触发Button1的Click事件。
步骤1、放一个CEdit控件和一个Button控件;
步骤2、选择CEdit控件的Multiline和Want return属性; (这个很重要,一定要记得)

步骤3、在对话框的PreTranslateMessage写代码:

首先在头文件中声明:

BOOL PreTranslateMessage(MSG* pMsg);

然后再源文件中定义:

BOOL CMfctempDlg::PreTranslateMessage(MSG* pMsg) 
{
if ((pMsg->message == WM_CHAR) && (pMsg->wParam == VK_RETURN))
{
HWND hwnd1 = ((CEdit*)GetDlgItem(IDC_EDIT1))->m_hWnd;     //Edit框ID号
if (pMsg->hwnd == hwnd1)
{
OnButton1();//这个可以是其他的函数,
}
}
return CDialog::PreTranslateMessage(pMsg);

}



BOOL CSendMsgDemoDlg::PreTranslateMessage(MSG* pMsg) 
{
if ((pMsg->message == WM_CHAR) && (pMsg->wParam == VK_RETURN))
{
HWND hwnd1 = ((CEdit*)GetDlgItem(IDC_EDIT_CONTENT))->m_hWnd;
if (pMsg->hwnd == hwnd1)
{
((CEdit*)GetDlgItem(IDC_EDIT_CONTENT))->SetSel(0, -1);   //清空Edit框所有内容

                        //m_edit.PostMessage(EM_SETSEL, 0, -1)
//OnBnClickedBtnOk();
}
}
return CDialog::PreTranslateMessage(pMsg);
}




点击Edit框,清空框内内容:

方法:“响应CEdit的EM_SETFOCUS消息”

void CSendMsgDemoDlg::OnEnSetfocusEditContent()
{
// TODO: 在此添加控件通知处理程序代码
::MessageBox(NULL,_T("按下了Edit框"),_T("提示"),MB_OK);
//((CEdit*)GetDlgItem(IDC_EDIT_CONTENT))->SetSel(0, -1);  //清空内容

       //m_edit.PostMessage(EM_SETSEL, 0, -1)   //全选编辑框中的文本
}

你可能感兴趣的:(VC,控件)