zoukankan      html  css  js  c++  java
  • 控件失去焦点与获得焦点

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

  • 相关阅读:
    BZOJ 1050 旅行
    BZOJ 1040 骑士
    BZOJ 1038 瞭望塔
    BZOJ 1037 生日聚会
    BZOJ 1823 满汉全席
    BZOJ 3091 城市旅行
    CF702E Analysis of Pathes in Functional Graph
    Luogu 2154 [SDOI2009]虔诚的墓主人
    Luogu 1268 树的重量
    Luogu 4867 Gty的二逼妹子序列
  • 原文地址:https://www.cnblogs.com/tiredoy/p/3366521.html
Copyright © 2011-2022 走看看