툴바를 Dock 시키게 되면 화려한 모습을 갖는다. 하지만, 그 툴바가 붙어 있던 자리에서
Hide 시켜 버리면, 그 자리에 툴바가 붙어있던 모습이 그대로 남아 있게 된다.

이것을 해결하는 방법이 있다.
먼저, ToolBar를 ShowWindow를 통해 나타나거나 사라지게 구성을 한다.
그리고 난뒤, 사라지거나 나타날때, 그 바로 뒤에 RecalcLayout()을 불러 주면된다.

이 RecalcLayout()은 CMainFrame에서 처리할 수 있다.

여기서 더 한가지, 그 RecalcLayout()을 응용해 한가지 더 기능이 있다.
현재 ToolBar의 Rect들을 변경하면, 그 변경된 내용을 가지고 재배치시키는 작업도 하게 된다.
여기서 응용하는 방법은 자신의 rect를  왼쪽으로 1도트라도 앞으로 옮겨 주고
RecalcLayout을 부르면 자신은 왼쪽으로 가고 왼쪽에 위치한 ToolBar는 그 ToolBar 오른쪽에
붙게 된다.


CRect rect;
GetWindowRect(&rect);
위로 붙일때
rect.OffsetRect(1,0);
아래로 붙일때
rect.OffsetRect(1,0);
왼쪽으로 붙일때
rect.OffsetRect(0,1);
오른쪽으로 붙일때
rect.OffsetRect(0,1);

각 상황에 맞게 OffsetRect를 한뒤 RecalcLayout()을 불러 주면 된다.

아 위에서 주의할 점은 GetWindowRect 는 참조형이다.
그러므로, 이 경우 아래의 rect를 변경하면, 그대로 Rect를 적용이 된다.
포인터 관계라는 것이라는 것을 잊지 말아야 한다. (나는 잊었었다. ^^;)
Posted by 하인도