問題:現在有一個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);
}
}