Context Menu에 새로운 메뉴 추가
VIZZARD Context Menu에 커스텀 메뉴를 추가하고, 처리하는 방법을 소개
- SHControl 구현 절차 기준으로 Plugin 기본 코드를 구성합니다. 
- 메뉴에 할당할 ID를 정의합니다. 
private int MENU_VIEW_SP = 8000;
private int MENU_VIEW_ID = 8001;
private int MENU_MODEL_SP = 8002;
private int MENU_MODEL_ID = 8003;
- VIZZARD 프로그램이 구동 완료되면, 아래 이벤트에 새로운 Context Menu를 추가합니다. 
private void Connector_OnInitializedAppEvent(object sender, EventArgs e)
{
    // 뷰어 영역에서 단일 모델 선택 시 메뉴 추가
    Connector.AddContextMenu(MENU_VIEW_SP, CONTEXTMENU_TYPE.VIEW_SINGLE, CONTEXTMENU_ITEMTYPE.SEPARATOR, "", true);
    Connector.AddContextMenu(MENU_VIEW_ID, CONTEXTMENU_TYPE.VIEW_SINGLE, CONTEXTMENU_ITEMTYPE.CONTEXTMENU, "커스텀 메뉴 #1", true);
    // 뷰어 영역에서 복수 모델 선택 시 메뉴 추가
    Connector.AddContextMenu(MENU_MODEL_SP, CONTEXTMENU_TYPE.VIEW_MULTI, CONTEXTMENU_ITEMTYPE.SEPARATOR, "", true);
    Connector.AddContextMenu(MENU_MODEL_ID, CONTEXTMENU_TYPE.VIEW_MULTI, CONTEXTMENU_ITEMTYPE.CONTEXTMENU, "커스텀 메뉴 #2", true);
}
- 메뉴 선택 시, 처리를 위한 이벤트를 추가합니다. 
private void Connector_OnInitializedAppEvent(object sender, EventArgs e)
{
    // 뷰어 영역에서 단일 모델 선택 시 메뉴 추가
    Connector.AddContextMenu(MENU_VIEW_SP, CONTEXTMENU_TYPE.VIEW_SINGLE, CONTEXTMENU_ITEMTYPE.SEPARATOR, "", true);
    Connector.AddContextMenu(MENU_VIEW_ID, CONTEXTMENU_TYPE.VIEW_SINGLE, CONTEXTMENU_ITEMTYPE.CONTEXTMENU, "커스텀 메뉴 #1", true);
    // 뷰어 영역에서 복수 모델 선택 시 메뉴 추가
    Connector.AddContextMenu(MENU_MODEL_SP, CONTEXTMENU_TYPE.VIEW_MULTI, CONTEXTMENU_ITEMTYPE.SEPARATOR, "", true);
    Connector.AddContextMenu(MENU_MODEL_ID, CONTEXTMENU_TYPE.VIEW_MULTI, CONTEXTMENU_ITEMTYPE.CONTEXTMENU, "커스텀 메뉴 #2", true);
    // 이벤트 추가
    Connector.OnContextMenuClickEvent += Connector_OnContextMenuClickEvent;
}
- 이벤트 발생 시, 아래와 같이 선택된 메뉴를 구분합니다. 
private void Connector_OnContextMenuClickEvent(object sender, ContextMenuClickEventArgs e)
{
    if(e.ID == MENU_VIEW_ID)
    {
        // 커스텀 메뉴 #1
    }
    else if(e.ID == MENU_MODEL_ID)
    {
        // 커스텀 메뉴 #2
    }
}
- 메뉴가 추가된 화면 
Figure 1 : 메뉴 화면

Last modified: 04 3월 2024