控件失去焦点与获得焦点

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.编译运行

 

posted @ 2013-10-13 11:26  tiredoy  阅读(2973)  评论(0编辑  收藏  举报