나는 그것을 얻을 수있는 방법이 있다고 생각하지만, 쉽지는 않을 것입니다.
OnAfterDock
을 걸러 내면 떠 다니는 창에 관심이없는 것 같습니다. 그래서, 도킹 창을 위해, 당신은 사용할 수 있습니다 반환 CDockablePane::GetDefaultPaneDivider
(MSDN here) - MSDN 말한대로 :
이
고정 가능한 창은 메인 프레임 윈도우에 결합, 또는 NULL 경우 유효한 CPaneDivider
객체가 고정 가능한 창 인 경우 도킹되지 않았거나 떠있는 경우.
(MSDN here)
는 ... 두 개의 창을 나누는 CPaneDivider
목적은 패널의 두 그룹으로 분할 또는 메인 프레임 윈도우의 클라이언트 영역에서 패널의 그룹을 구분
다음 부분 스크린 샷 더 말한다 :
디바이더가 수평 또는 수직 등의 경우
그래서, 일반 구역 분할을 위해, 당신은 다른 창 또는 다른 내장 CPaneDivider
(여기에 필요하므로 재귀 심문)를 찾아 확인 CPaneDivider
의 방법을 사용할 수를 사용할 수 있습니다
상기 한 바와 다른 경우를 들어, (다시 as MSDN says)을 CPaneContainerManager
클래스,
봐 ... 당신은 여기에서 현재의 도킹 레이아웃
의 저장 및 디스플레이를 관리 원래 도킹 된 창에서 시작하는 전체 도킹 계층을 다시 드릴 다운 할 수 있습니다.
내가 너라면 EnableLoadDockState
을 사용하거나 적어도 다시 MFC 소스 코드를 검색하여 재사용 할 수있는 내부 도우미 클래스/기능이 있는지 살펴볼 것입니다.
고마워요! 나는 그것을 조사 할 것이다.EnableLoadDockState가 false로 설정되었다는 것을 정말 싫어합니다. 2 개가 고정되어있을 때 탭 첨부 도킹 탭을 올바르게 만들 수 없습니다. 나는 어떤 진전이있을 때 이것을 업데이트 할 것입니다. – Detox
그것을 작동 시키려고 노력한 후에, 나는 어느 정도 포기했다. 파생 된 cDockablePane 클래스의 잔재를 수정하여 도크 크기와 창 크기 및 위치를 얻을 수 있었지만 도킹 위치가 CDockingManager에 저장되고 필요한 특성이 보호되므로 저장하기가 너무 어렵고 복잡했습니다. – Detox