아래 예는 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를 이용해서 직접 함수를 호출 하는 방법등으로 사용하면 된다.
댓글 없음:
댓글 쓰기