기본 콘텐츠로 건너뛰기

라벨이 MENU인 게시물 표시

XM MDL Programming - #9(메뉴 생성하기)

dgnlib 이라는 파일을 가지고 툴바와 메뉴를 생성할 수 있습니다. 우선 Project와 User를 선택하여 해당 dgnlib 파일을 엽니다. Workspace --> Customize 메뉴로 갑니다. 오른쪽 부분에서 마우스 오른쪽 클릭을 하여 New Menu 와 New Menu Item 을 통하여 메뉴를 생성합니다. 메뉴를 생성했다면 메뉴를 선택했을 때 실행되는 루틴을 설정하는게 꼭 필요한데요, 메뉴의 Properties 항목 중에서 Key-in 항목에서 실행하는 명령을 입력하면됩니다. 메뉴와 실행되는 명령이 서로 부합되지는 않지만 뭐~~ dgnlib 파일을 저장하고 나서 빠져 나갑니다. 이제 dgn 파일을 오픈해 보면 우리가 방금 만든 메뉴가 기존의 메뉴에 추가되어 있는 것을 볼 수 있습니다. 앞서 우리가 만든 dgnlib 파일은 general Project 그리고 example User 일 때만 적용됩니다.

메뉴 추가

위와 같이 PDMS에 메뉴를 추가하는 방법입니다. 아래는 DESIGN 모듈에 메뉴를 붙이는 방법입니다. 1. PDMS 설치 폴더\pmllib\design\forms\appdesmain.pmlfrm 파일을 엽니다. 2. appdesmain.pmlfrm파일에서 menu bar를 추가합니다. 3. 폼 추기화 부분에서 추가한 menu bar에 붙을 메뉴를 생성합니다.

메뉴 생성 예

아래는 메뉴를 생성하는 샘플코드입니다. try { CComPtr pDisp; pDisp = acedGetAcadWinApp()->GetIDispatch(TRUE); CComPtr pComApp; HRESULT hr = pDisp->QueryInterface(IID_IAcadApplication,(void**)&pComApp); if(FAILED(hr)) return; CComPtr pMenuGrps = NULL; if(FAILED(pComApp->get_MenuGroups(&pMenuGrps))) return; CComPtr pMenuGrp = NULL; if(FAILED(pMenuGrps->Item(_variant_t((short)0),&pMenuGrp))) return; CComPtr pPopupMenus = NULL; //add a menu item to the first loaded menu group by name "AddedFromArx" if(FAILED(pMenuGrp->get_Menus(&pPopupMenus))) return; CComPtr pPopupMenu = NULL; if(FAILED(pPopupMenus->Add(_bstr_t("PWPID"),&pPopupMenu))) return; CComPtr pPopupMenuItem = NULL; pPopupMenu->AddMenuItem(_variant_t((short)0),_bstr_t("New Project"),_bstr_t("PWPID_NEWPROJECT\n"),&pPopupMenuItem); pPopupMenu->AddMenuItem(_variant_t((short)1),_bstr_t("Open Project"),_bstr_t("PWPID_OPENPRO...

메뉴 제거 예

aaa라는 메뉴를 제거한다. try{ CComPtr pDisp; pDisp = acedGetAcadWinApp()->GetIDispatch(TRUE); CComPtr pComApp; HRESULT hr = pDisp->QueryInterface(IID_IAcadApplication,(void**)&pComApp); if(FAILED(hr)) return; CComPtr pMenuGrps = NULL; if(FAILED(pComApp->get_MenuGroups(&pMenuGrps))) return; CComPtr pMenuGrp = NULL; if(FAILED(pMenuGrps->Item(_variant_t((short)0),&pMenuGrp))) return; CComPtr pPopupMenus = NULL; //add a menu item to the first loaded menu group by name "AddedFromArx" if(FAILED(pMenuGrp->get_Menus(&pPopupMenus))) return; //_variant_t index=1L; //pPopupMenus->RemoveMenuFromMenuBar(index); CComPtr pPopupMenu = NULL; long lCount=0L; pPopupMenus->get_Count(&lCount); for(long l=0;l < lCount;l++){ pPopupMenus->Item(_variant_t((long)l),&pPopupMenu); BSTR name; pPopupMenu->get_Name(&name)...