찾다 찾다.. 머리를 굴려봐도 마땅히.. 이거다!! 하는 방법이 안떠올라서 질문 올려 봅니다. ㅠㅠ

 

MainAPP 라는 객체가 있습니다.

이 객체는 싱글톤 입니다.

 

MainAPP 객체안에는

SubWindow라는 객체를 계승한 여러 윈도우객체의 포인터를 가지고 있구요

SubWindow 라는 분은 윈도우 핸들과 인스턴스핸들 등을 보관하고 OnMessage 라는 함수로 외부 콜백에서 여러 방법으로 메시지를 연결하여 처리하고 있습니다.

 

툴을 만들어야 하기 때문에 분할된 Child 윈도우를 사용 하고 있습니다.

 

MainApp 역시 부모가 되는 윈도우 이기 때문에

OnCreate 시 즉 WM_CREATE 가 발생하면

 

자식들의 객체를 인스턴스화 합니다.

그리고 ->Init( ....) 이라는 함수로 CreateWindow 를 콜합니다. 기본적으로 파라미터는 크기관련 파라미터는 0, 0, 0, 0 으로 세팅하여 생성한 다음

 

MoveWindow(....) 로 해당 윈도우의 크기를 배치 하는 형태입니다.

 

구조를

MainApp 의 자식인 LibWindow 아 있고 LibWindow 의 개념상 하위부분은 TabContorl 이 있기때문에

 

MainApp WM_CREATE 에서 LibWindow 를 생성하고

LibWindow의 WM_CREATE 부분에서 TabControl 을 생성 합니다.

 

이렇게 되면

 

MainApp 의 WM_CREATE 에서 LibWindow 가 생성된다 -->

LibWindow 의 WM_CREATE 에서 TabControl 이 생성이 된다. -->

LibWindow 의 ClientRect 를 받아서 TabControl 의 WM_SIZE 시 MoveWindow 로 콘트롤의 위치를 잡는다. 하지만 LibWindow 는 아직 WM_SIZE 가 불리지 않아서 위치값이 0, 0, 0, 0, 이다. -->

MainApp 의 ClientRect 를 받아서 LibWindow 의 WM_SIZE 에서 MoveWindow 로 위치를 잡는다. 하지만 또 MainApp 의 WM_SIZE 가 불리기 전이다.

MainApp 의 WM_SIZE 가 불리며 MoveWindow()로 위치를 잡는다..

 

이렇게 되면 문제점이.. 한번 움직여야지.. 제대로 콘트롤이 나오고.. 최대회 최소화 시에는 콘트롤이 사라져버리는 현상이 생깁니다.

그리고 창크기를 이동 시 콘트롤부분이 딜레이가 있게 크기가 변하는게 눈에 보이구요...

 

생성하고--> 생성하고 --> 생성하고 이 관계를 께야 할 것 같은데

어찌되었건 서브윈도우를 생성하기 위해서는 부모의 윈도우가 있어야 하는 것이기 때문에... 골치가 아픕니다.

 

어찌하면 콘트롤도 잘 나오고 구조도 어느정도 깔끔해 지는 해피엔딩이 될 수 있을까요? ㅠㅠ