문제

이 질문은 관련이 있습니다 내 이전 것.

하나의 문서에 대한 다른보기 역할을하는 여러 MDI 하위 창이있는 MFC (VC6) MDI 응용 프로그램이 있습니다.

해당 프레임 중 하나를 다른 프레임 위에 놓을 수 있습니까?
나는 전화를 시도했다

SetWindowPos(
   &GetParentFrame()->wndTopMost,
   0, 0, 0, 0,
   SWP_NOMOVE | SWP_NOSIZE);

그리고

ModifyStyleEx(0, WS_EX_TOPMOST);

cmdichildwnd에서는 작동하지 않는 것처럼 보입니다.

도움이 되었습니까?

해결책

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 Knowledgebase

다른 팁

아이 창을 다른 창 위에 유지하는 것이 좋은 UI 디자인이라고 확신합니까? 이것이 별도의 최상위 프레임이되어서는 안됩니까? 아니면 컨트롤 바?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top