Menu Item Pane Dialog Custom Embedded
1 개요
CGUIMenuItemPaneDialogCustomEmbedded는 리소스 뷰에서 만든 다이얼로그를 도킹 가능한 Pane에 삽입하고, 초기화/표시/도킹/이벤트(좌더블클릭, 우클릭 메뉴) 등을 관리하는 메뉴 아이템 클래스입니다. 다중 인스턴스 지원·컨텍스트 메뉴 선택 처리·권한 수준 제어를 포함합니다.
2 메서드 레퍼런스 (Method Reference)
2.1 권한·다중 인스턴스
SetMinimalAuthorityLevelOnContextMenu(eAuth, eMenuTree)- 컨텍스트 메뉴 노출 최소 권한 지정
2.2 Pane/다이얼로그 제어
GetPane()- 도킹 Pane 객체 포인터 획득.
SetCustomDialog(pDlg)/GetCustomDialog()- 임베드할 커스텀 다이얼로그 설정/조회.
InitializePane()/IsInitialized()- Pane 초기화 및 여부 확인.
ShowPaneWindow()/ClosePane()- Pane 표시/닫기.
InitialDockPaneWindow()- 언도킹 상태 Pane을 초기 도킹 위치로 도킹.
SetDockDone(bool)/IsDockDone()- 도킹 완료 상태 설정/조회.
3 사용 예제
미리보기
위 그림에서 보이는 것과 같이 Menu 창에 "DIALOG_TEACHING" 이라는 메뉴 아이템이 있고, 이 메뉴 아이템을 더블 클릭하면 우측의 "DIALOG_TEACHING" 이라는 Dockable Pane 창이 뜨도록 하는 방법을 설명하겠습니다.
BOOL CTestProgramApp::InitInstance()
{
CWinAppEx::InitInstance();
SetRegistryKey(L"TestProgramApp");
CGUIManager::PreInitialize();
// 1) 객체 생성 및 설정
CGUIMenuItemPaneDialogCustomEmbedded* pMenuItem = new CGUIMenuItemPaneDialogCustomEmbedded;
pMenuItem->SetPath(L"Algorithm Manager@Imaging"); // path
pMenuItem->SetName(L"DIALOG_TEACHING"); // name of menu item
pMenuItem->SetIcon(ETreeItemIcon_License); // icon setting
// 2) Set dialog
pMenuItem->SetCustomDialog(new CDialogBoardSize);
// 3) Register and set multi instance
bool bMultiInstance = false;
CGUIManager::AddMenuItem(pMenuItem, bMultiInstance);
...
}
위와 같이 등록하면 Menu 창에 메뉴 아이템이 추가되며, 이 메뉴 아이템을 더블클릭하여 다이얼로그를 띄울 수 있습니다.
3.1 메뉴 등록
프로그램의 InitInstance() 함수에서 CGUIManager::PreInitialize(); 를 호출한 후 아래 코드를 추가하여 다이얼로그 메뉴 아이템을 등록합니다.
3.2 다이얼로그 구성 및 클래스
위 코드의 2) Set dialog 부분을 보면 CDialogBoardSize라는 다이얼로그 클래스를 설정하는 모습을 볼 수 있습니다. 이 다이얼로그를 구성하는 방법은 CGUIDialogCustomEmbedded를 참고하세요.
3.3 Register and set multi instance
생성한 메뉴 아이템 객체를 CGUIManager::AddMenuItem()으로 등록해야 menu pane에 정상적으로 등록되며, 또한 CGUIManager에서 메모리 관리를 하므로 메모리 해제에 신경 쓸 필요가 없습니다.