CMDIFrameWndEx::OnShowMDITabContextMenu

调用由框架在快捷菜单中某个显示选项。有效在MDI选项卡式仅组。

virtual BOOL OnShowMDITabContextMenu(
   CPoint point,
   DWORD dwAllowedItems,
   BOOL bTabDrop 
);

参数

  • [in] point
    菜单在屏幕上的位置的坐标。

  • [in] dwAllowedItems
    指示标志的A按位或组合的操作允许当前选项卡:

    • BCGP_MDI_CREATE_VERT_GROUP -可以创建一个垂直的选项卡组。

    • BCGP_MDI_CREATE_HORZ_GROUP -可以创建一个水平制表符组。

    • BCGP_MDI_CAN_MOVE_PREV -可以移动选项移到上一选项卡组。

    • BCGP_MDI_CAN_MOVE_NEXT -可以移动选项移到下一个选项卡组。

    • BCGP_MDI_CAN_BE_DOCKED -选项卡式文档切换到停靠状态(与选定相关文档只)。

  • [in] bTabDrop
    显示菜单的TRUE 由于拖到另一个选项卡式机组的选项。显示菜单的FALSE 为当前活动的选项卡上的一个快捷菜单。

返回值

重写在 CMDIFrameWndEx选件类的此方法的派生类。

备注

如果不处理 OnShowMDITabContextMenu,快捷菜单不会显示。当您启用MDI选项卡式组功能时,此功能由 MFC应用程序向导 生成的。

示例

下面的示例演示 OnShowMDITabContextMenu 如何在 VisualStudioDemo示例:MFC Visual Studio应用程序

BOOL CMainFrame::OnShowMDITabContextMenu(CPoint point, DWORD dwAllowedItems, BOOL bDrop)
{
    CMenu menu;
    VERIFY(menu.LoadMenu(bDrop ? IDR_POPUP_DROP_MDITABS : IDR_POPUP_MDITABS));

    CMenu* pPopup = menu.GetSubMenu(0);
    ASSERT(pPopup != NULL);

    if ((dwAllowedItems & AFX_MDI_CREATE_HORZ_GROUP) == 0)
    {
        pPopup->DeleteMenu(ID_MDI_NEW_HORZ_TAB_GROUP, MF_BYCOMMAND);
    }

    if ((dwAllowedItems & AFX_MDI_CREATE_VERT_GROUP) == 0)
    {
        pPopup->DeleteMenu(ID_MDI_NEW_VERT_GROUP, MF_BYCOMMAND);
    }

    if ((dwAllowedItems & AFX_MDI_CAN_MOVE_NEXT) == 0)
    {
        pPopup->DeleteMenu(ID_MDI_MOVE_TO_NEXT_GROUP, MF_BYCOMMAND);
    }

    if ((dwAllowedItems & AFX_MDI_CAN_MOVE_PREV) == 0)
    {
        pPopup->DeleteMenu(ID_MDI_MOVE_TO_PREV_GROUP, MF_BYCOMMAND);
    }

    if ((dwAllowedItems & AFX_MDI_CAN_BE_DOCKED) == 0)
    {
        pPopup->DeleteMenu(ID_MDI_TABBED_DOCUMENT, MF_BYCOMMAND);
    }

    CMFCPopupMenu* pPopupMenu = new CMFCPopupMenu;
    pPopupMenu->SetAutoDestroy(FALSE);
    pPopupMenu->Create(this, point.x, point.y, pPopup->GetSafeHmenu());

    return TRUE;
}

要求

标头: afxMDIFrameWndEx.h

请参见

参考

CMDIFrameWndEx选件类

层次结构图