Такое поведение не произойдет, если вы создадите модальное диалоговое окно, потому что родительское окно немедленно отключается и диалог получает фокус. Но в диалоговом окне без режима может возникнуть мерцание, и диалоговое окно теряет фокус.
Для диалогового окна без режима используйте PostMessage
или SetTimer
, чтобы диалоговое окно без режима открывалось после обработки сообщения TreeView. ,Пример:
#define WM_USER_MSG1 WM_USER + 1
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_MESSAGE(WM_USER_MSG1, create_dialog)
...
END_MESSAGE_MAP()
void CMyWnd::OnDblClick(NMHDR*, LRESULT* pResult)
{
PostMessage(WM_USER_MSG1, 0, 0);
*pResult = 0;
}
LRESULT CMyWnd::create_dialog(WPARAM, LPARAM)
{
if(!m_dlg.GetSafeHwnd())
m_dlg.Create(IDD_DIALOG_X, this);
m_dlg.ShowWindow(SW_SHOW);
return 0;
}