'DockablePane'에 해당되는 글 1건

  1. 2011.06.10 [MFC Feature Pack] 도킹 윈도우(CDockablePane)의 생성.
Visual Studio 2008 SP1 Feature Pack이 적용된 MFC 프로그래밍에서는 CDockablePane이라는 클래스를 상속받아 도킹이 가능한 윈도우를 생성할 수 있습니다.

생성된 윈도우는 Application의 좌, 우, 위, 아래 어떠한 위치로도 도킹이 가능합니다.

● 도킹윈도우의 생성 ●

1. Application에 생성하고자 하는 CDockablePane을 상속받는 윈도우 클래스를 생성합니다.
class CTestWnd :: public CDockablePane
{
      ...
}

2. Application의 CMainFrame내의 OnCreate 함수에서 윈도우를 생성하고 생성된 윈도우가 도킹가능한 위치를 지정합니다.
CTestWnd m_wndTest;

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
      ...
      DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI;

      // 생성될 윈도우 제목.
      CString strCaption(_T("윈도우"));
      // 윈도우 생성.
      if (!m_wndTest.Create(strCaption, this, CRect(0, 0, 200, 200), TRUE, (UINT)1, dwStyle))
      {
            TRACE(_T("Create Failed..."));
            return -1;
      }

      m_wndTest.EnableDocking(CBRS_ALIGN_ANY);
      DockPane(&m_wndTest);
      ...
}

도킹 윈도우를 생성하는 Create 함수의 파라미터를 주의깊게 살펴볼 필요가 있습니다.

첫번째 파라미터는 생성하는 도킹윈도우의 제목입니다.
두번째 파라미터는 생성하는 도킹윈도우의 부모 윈도우로 보통 윈도우를 생성하는 주체(위 코드에서는 메인프레임)를 지정합니다.
세번째 파라미터는 생성되는 윈도우의 기본 크기이나 프로그래머가 설정한 레이아웃에 따라 크기가 동적으로 변경되므로 크게 의미가 있지는 않습니다,
네번째 파라미터는 TRUE로 지정할 경우 생성된 윈도우가 삭제될때 프로그래머가 따로 DistroyWindow를 해줄 필요가 없습니다.
다섯번째 파라미터는 생성하는 윈도우의 Resource ID를 의미하는데 일반적으로 프로그래머가 생성하여 따로 Resource ID가 없을 경우 1을 넣어줍니다. (-1을 넣을 경우 처음 띄울때는 화면에 나타나지만 두번째 이후에는 화면에 나타나지 않습니다.)
여섯번째 파라미터는 생성될 윈도우의 스타일을 지정합니다.

윈도우 생성 이후에는 EnableDocking 메소드를 통해 생성된 윈도우가 도킹 가능한 위치를 지정하는데 CBRS_ALIGN_ANY로 지정하면 Application 어떤위치에라도 모두 도킹이 가능합니다.

또한 DockePane 메소드는 생성된 윈도우를 Application(프레임윈도우)에 붙이는 역할과 동시에 CDockingManager(도킹 윈도우 관리 클래스) 에 등록하는 역할을 합니다.

위와같은 방식으로 윈도우를 생성하여 Application을 실행하면 아래와 같은 화면이 나타납니다.

 


아이콘을 통하여 자동 숨김 및 숨김, 마우스 조작을 통한 도킹위치 변경. 프레임 윈도우에서의 창 분리 모두 가능한 도킹 윈도우의 생성 모습입니다.


Posted by 루시엔시엘

댓글을 달아 주세요