1.失去焦点
让控件失去焦点的方法,就是给该控件发送一个WM_KILLFOCUS的消息。可以通过下面三种方式实现
#1使用Cwnd类的PostMessage
GetDlgItem(控件ID号)->PostMessage(WM_KILLFOCUS,0,0);
#2获取控件的句柄,然后通过句柄直接给控件发送消息,使用函数LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM IParam)
::SendMessage(GetDlgItem()->m_hWnd,WM_KILLFOCUS,-1,0);
#3使用MFC封装的函数
SendDlgItemMessage(控件ID号,WM_KILLFOCUS,0,0);
2.获得焦点
获取焦点很简单,通过CWnd提供的SetFocus()即可.
GetDlgItem(控件ID号)->SetFocus();
样例:
1.在VC中新建一个基于对话框的MFC程序。
2.从工具栏中拖出控件,摆在对话框上,并删除自动生成的按钮和静态文本。摆好后如下图所示。
3.为各个控件命名ID,命名后如下所示
4.双击界面上的按钮,添加按钮响应事件。
void CKillFocusDlg::OnKillA() { GetDlgItem(IDC_first)->PostMessage(WM_KILLFOCUS,0,0); } void CKillFocusDlg::OnSetA() { GetDlgItem(IDC_first)->SetFocus(); } void CKillFocusDlg::OnKillB() { GetDlgItem(IDC_second)->PostMessage(WM_KILLFOCUS,0,0); } void CKillFocusDlg::OnSetB() { GetDlgItem(IDC_second)->SetFocus(); }
5.编译运行