부모윈도우가 메인으로, 자식윈도우 네다섯개를 만들어서 이래저래 사용할 수 있게 만들어야 하는 상황.

각각 개별로 돌아가라고 자식윈도우를 스레드로 만들고 다이얼로그를 생성, 보여주었다.

그런데 망할놈의 자식윈도우들이, 부모윈도우가 활성화되어있는데도 부모윈도우 밑으로 안내려가더라

찾다보니 TopMost라는 게 있어서 이것저것 건드려봤는데도... 흠... 썩 잘 해결되지 않았다.

 

한 4시간을 헤맸나; 테스트 해보고 실수로 안지워놓은 코드덕분에 문제해결!

 

방법은 간단했다...

Create(IDD_DIALOG_SUB, CWnd::GetDesktopWindow());

슈발! GetDesktopWindow가 뭐라고 4시간의 고생을 한 줄로 무너트려버렸어ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

자식윈도우는 무조건 부모윈도우의 위에 있어야 한다. 이건 바꿀 수 없다.

왜그런지 생각해봤는데... 갑자기 떠오른 게 있다. 버튼 컨트롤?

버튼 컨트롤도 그 버튼이 위치한 다이얼로그가 버튼 컨트롤의 부모 다이얼로그가 되는 것이다.

버튼 컨트롤도 윈도우다. 당연하다. (CButton 클래스는 CWnd 클래스를 상속받고 있다=_=;;)

그 버튼이 무슨무슨 조작을 했더니, 아닛, 버튼이 다이얼로그 뒤로 가버렸엉! 해버리면 안되지 않은가...


Create 함수의 두 번째에는 그 윈도우의 부모 핸들을 넣게 되어있다.

CWnd::GetDesktopWindow()

이게 아마 바탕화면 핸들을 구하는 함수였었나?

결국 부모와 자식간 관계가 아닌 동등한 위치에 있기 때문에 Z-order를 맘대로 조절할 수 있는 것이다... 라고 함ㅋㅋ


 

주의할 것이 있는데 저렇게 되면 자식윈도우라고 칭해지는 건 일단 자식윈도우가 아니게 되므로

작업표시줄을 눌렀을 때 최소화가 같이 안된다. 결국 이것저것 절차를 취해서 따로 처리해야 한다는 소리임.


 

 

'Programming > MFC' 카테고리의 다른 글

MFC 문자열 총정리  (0) 2012.06.15
CString를 char*로 바꾸기  (0) 2012.04.25
VISUAL C++ 2008 MFC 윈도우 프로그래밍 247p 3번  (0) 2012.02.16
RedrawWindow()  (0) 2012.02.13
OnPaint()  (0) 2012.02.13
Posted by HUEJI
: