CMDIFrameWndEx::OnShowMDITabContextMenu
Вызывается инфраструктурой перед контекстным меню отображается на одной из вкладок.Допустимый для Групп нашитых MDI.
virtual BOOL OnShowMDITabContextMenu(
CPoint point,
DWORD dwAllowedItems,
BOOL bTabDrop
);
Параметры
[входящий] point
Расположение меню в экранных координатах.[входящий] 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 - переключение команду вкладка в состыкованному состояние (соответствующий нашитых только для документов).
[входящий] bTabDrop
TRUE для отображения меню в результате перетащить на другую вкладку нашитую группу.FALSE для отображения меню, как контекстное меню в текущей активной вкладке.
Возвращаемое значение
Переопределите этот метод в Класс CMDIFrameWndEx- производный класс.
Заметки
Если не обрабатывается OnShowMDITabContextMenu, контекстное меню отображаться не будет.Эта функция создается Мастер приложений MFC при включении нашитую MDI функцию Групп.
Пример
Показать, как OnShowMDITabContextMenu следующие примере используется в Образец VisualStudioDemo: приложение Visual Studio MFC.
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