2008/09/26

Popup Menu에 UpdateCommandUI Handler동작 시키기

이벤트 핸들러 없이 UpdateCommandUI Handler 만 있는 팝업 메뉴

이벤트 핸들러 없이 UpdateCommandUI Handler 만 있는 팝업 메뉴


메인 메뉴와는 다르게 팝업 메뉴에는 자동으로 UpdateCommandUI Handler 가 동작을 하지 않는다. 아래 내용을 팝업 메뉴에 UpdateCommandUI Handler 가 동작 하도록하는 코드이다.

void CtestView::OnRButtonUp(UINT nFlags, CPoint point)
{
    CMenu menu;
    menu.LoadMenu( IDR_POPUP );
    CMenu* pPopup = menu.GetSubMenu( 0 );

    // UpdateCommandUI Handler 호출
    for (UINT i = 0; i < pPopup->GetMenuItemCount(); i++) 
    { 
        CCmdUI state; 
        state.m_nIndexMax = pPopup->GetMenuItemCount(); 
        state.m_nIndex = i; 
        state.m_nID = pPopup->GetMenuItemID(i); 
        state.m_pMenu = pPopup; 
        state.DoUpdate(this, TRUE); 
    } 

    CPoint ptPopup = point;
    ClientToScreen( &ptPopup );
    pPopup->TrackPopupMenu( TPM_LEFTALIGN, ptPopup.x, ptPopup.y, this );

    CView::OnRButtonUp(nFlags, point);
}

void CtestView::OnUpdateMypopupPopup1(CCmdUI *pCmdUI)
{
    pCmdUI->Enable( TRUE );
}

void CtestView::OnUpdateMypopupPopup2(CCmdUI *pCmdUI)
{
    pCmdUI->Enable( FALSE );
}
코드적용 후 팝업 메뉴

코드적용 후 팝업 메뉴

Original Post : http://neodreamer-dev.tistory.com/175

No comments :

Post a Comment