1. 程式人生 > >重繪ListCtrl中增加子控制元件Edit是,在父控制元件失去焦點時,子控制元件不進行隱藏

重繪ListCtrl中增加子控制元件Edit是,在父控制元件失去焦點時,子控制元件不進行隱藏

問題:現在有一個listctrl控制元件,需要在某一列上新增一個子控制元件edit。當點選子控制元件(edit)時,子控制元件顯示出來,父控制元件(ListCtrl)已經失去焦點了。此時,要是滑鼠點選的位置不在該控制元件內,edit處於顯示狀態,父控制元件(ListCtrl)是失去焦點狀態。

需要解決的問題:

當滑鼠點選的位置不在該控制元件內時,子控制元件應該隱藏。

 

解決思路:

想要在滑鼠點選父視窗之外,使內部所有的子控制元件隱藏時,需要在父控制元件(ListCtrl)對edit控制元件做處理。

應該使用edit的KillFouces訊息。因為edit作為子控制元件出現,不能使用WM_KILLFOUCES訊息,應該使用edit內部的失去焦點訊息

 

afx_msg  void OnEnKillfocusEditnormal();

ON_EN_KILLFOCUS(ListCtrl_Edit_ID, &CPublicListChildCtrl::OnEnKillfocusEditnormal)

void CMyChildCtrl::OnEnKillfocusEditnormal()
{
    if (m_Edit->IsWindowVisible() == TRUE)
    {
        m_Edit->ShowWindow(SW_HIDE);
    }
}