MDI 어린이 창을 형제 위에 머물게하는 방법은 무엇입니까?
-
09-09-2019 - |
문제
이 질문은 관련이 있습니다 내 이전 것.
하나의 문서에 대한 다른보기 역할을하는 여러 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 디자인이라고 확신합니까? 이것이 별도의 최상위 프레임이되어서는 안됩니까? 아니면 컨트롤 바?
제휴하지 않습니다 StackOverflow