VC 当EDIT失去焦点的同时,发送回车事件。
的有关信息介绍如下:我的做法是这的,在工程主对话框中添加一个CEdit和CButton,意思是当编辑框获得焦点时,输入内容,然后按下回车,焦点转到按钮上,当按钮被按下的那一刻,同时调用了CEdit子类的OnKillFocus函数...以下是具体内容:1、为CEdit添加一个派生类CBaseEdit,然后添加一个OnKillFocus()函数2、为OnKillFocus写入以下代码:#include "TestDlg.h"//把当前主对话框作为CBaseEdit的父窗口。。。void CBaseEdit::OnKillFocus(CWnd* pNewWnd) { CEdit::OnKillFocus(pNewWnd); // TODO: Add your message handler code here MessageBox("CEdit的OnKillFocus函数被调用了!"); CTestDlg * parent = (CFocusDlg*)GetParent();//创建一个父窗口的指针对象 CString str; GetWindowText(str); parent->m_str = str;//当前编辑框中的内容赋给主对话框类成员变量m_str parent->m_btn.SetFocus();}3、主对话框CTestDlg类中,为按钮添加消息响应函数#include "BaseEdit.h"CString m_str;CButton m_btn;CBaseEdit m_edit;。。。void CTestDlg::OnButton1() { // TODO: Add your control notification handler code here MessageBox(m_str);}5、在主对话框类中添加PreTranslateMessage消息响应函数BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg==NULL) return false; const HWND hwnd=pMsg->hwnd; if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==13){ SetTheFocus();//按下回车键时调用该函数 } return CDialog::PreTranslateMessage(pMsg);}6、在主对话框类添加一个自定义函数SetTheFocusvoid CTestDlg::SetTheFocus(){ HWND hwnd=::GetFocus(); int iID=::GetDlgCtrlID(hwnd); switch(iID)//判断当前哪个控件获得焦点 { case IDC_EDIT1: m_btn.SetFocus(); break; case IDC_BUTTON1: ::PostMessage(this->GetSafeHwnd(),WM_COMMAND,iID,(UINT)hwnd); break; }}