В вашем классе CMDIChildWnd (обычно CChildFrame) добавьте статический HWND m_hTopWnd
. Установите его равным HWND ребенка, которому вы хотите быть всегда на вершине.
Ручка WM_WINDOWPOSCHANGED
в CChildFrame
. В обработчике проверьте текущий m_hWnd == m_hTopWnd
. Если нет, позвоните
::SetWindowPos(m_hTopWnd, HWND_TOP, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
Таким образом, всякий раз, когда устанавливается положение любого дочернего окна MDI, окно «всегда сверху» будет сдвигаться обратно наверх.
Также обрабатывайте WM_CLOSE
, и когда верхнее окно закрывается, установите m_hTopWnd = NULL.
См. Также: Статья CodeProject и База знаний MSDN