Post List

2014년 12월 28일 일요일

Codejock Xtreme Toolkit : Docking Pane 에 Dialog 연결하기

Docking Pane 그 자체만으로는 그냥 빈 Pane을 추가한 거라서 아무런 의미가 없다. 거기에  Dialog 나 View (+ Doc) 를 첨부(Attach)시켜서 사용해야 한다.

아래 예는 Xtream Toolkit Project에 Docking Pane을 추가한 Project에서 시작하겠다.
(아래 Link글 참조)

1. Dialog를 Project에 추가

  Dialog를 추가하는 방법에는 여러가지가 있다.

 -  Class로 추가 메뉴를 사용할 수도 있으며,
 -  Resource View에서 Dialog를 추가 할 수 있다. Dialog 자체만으로 모든 기능을 다 한다면 굳이 Class를 추가 할 필요가 없지만, Button을 추가한 다음 Click Event등을 사용하고자 한다면 해당 기능을 구현한 Class가 필요해진다. 이때 Class를 추가하는 Popup이 떠서 쉽게 추가가 가능하다.
 - Resource.h , 프로젝트의 rc을 수정하고, cpp/h 파일을 직접 추가하면서 다 Coding 해주는 방법도 있다.

 첫번째 방법인 Class 추가를 사용해보겠다.

 Solution Explorer에서 Project에서 마우스 우클릭한 뒤 Add -> Class를 눌러준다.


MFC Class를 선택한 다음 CDialogEx 를 상속받는 Class를 하나 추가해 준다.


2. Dialog 편집

Dialog 의 닫기버튼 (X) 및 Titlebar를 없에야 자연스럽게 보이므로, Resource View에서 Dialog 아래 있는 이번에 추가한 Dialog로 찾아들어가서 System Menu, Title Bar를 모두 false로 설정한 뒤 우리가 추가한 Dialog란 것을 확인하기 위해서 의미없는 Button을 좌측 상단에 하나 추가하였다.




3. DockPane에 Dialog를 첨부(Attach)

MainFrm.cpp 파일로 가서 새로 추가한 Dialog의 Header파일을 추가한 다음

#include "DlgTest1.h"

OnCreate 안에 있는 Pane을 추가한 소스를 먼저 찾아가자.

CXTPDockingPane* pwndPaneWorkspace = m_paneManager.CreatePane(
    IDR_PANE_WORKSPACE, CRect(0, 0,200, 120), xtpPaneDockBottom, pwndPane1);

그 아래에 다음과 같이 입력하자.

CDlgTest1* dlg = new CDlgTest1;
dlg->Create(IDD_DLGTEST1);
pwndPaneWorkspace->Attach(dlg);

그리고 실행하면 WorkspacePane에 Dialog가 첨부된 것을 확인 할 수 있다.
View (+Doc)를 첨부하려면 AttachView() 함수를 사용하면 된다.


예제라서 별도로 선언을 MainFrm.h에다가 하지는 않았지만, 실제로 각각의 DockingPane 및 Dialog를 제어할려면 각각의 Object를 MainFrm에 멤버변수로 선언한 다음 OnCreate에서 생성을 하면서 각각의 Object에게 PostMessage를 이용한다던지, Pointer를 이용해서 직접 함수를 호출 하는 방법등으로 사용하면 된다.


댓글 없음:

댓글 쓰기