Example #1
0
void CMailView::OnContextMenu(CWnd*, CPoint point)
{
	if (point == CPoint (-1, -1))
	{
		CBCGPGridRow* pSel = GetReportCtrl ()->GetCurSel ();
		if (pSel != NULL)
		{
			CRect rect = pSel->GetRect ();
			ClientToScreen (&rect);

			point.x = rect.left;
			point.y = rect.bottom;
		}
	}

	theApp.ShowPopupMenu (IDR_MAIL_MENU, point, this);
}
//************************************************************************************************
void CBCGPRibbonCustomizeRibbonPage::OnShowTreeContextMenu(CBCGPRibbonTreeCtrl* pTreeCtrl, CPoint point)
{
	if (pTreeCtrl != &m_wndRibbonTreeDest)
	{
		return;
	}

	if (m_pSelCategoryDest == NULL && m_pSelPanelDest == NULL && m_pSelElemDest == NULL)
	{
		return;
	}

	const UINT idNewTab		= (UINT) -102;
	const UINT idNewGroup	= (UINT) -103;
	const UINT idRename		= (UINT) -104;
	const UINT idRemove		= (UINT) -105;
	const UINT idMoveUp		= (UINT) -106;
	const UINT idMoveDown	= (UINT) -107;

	CMenu menu;
	menu.CreatePopupMenu ();

	{
		CBCGPLocalResource locaRes;
		CString strItem;

		m_wndNewTab.GetWindowText(strItem);
		menu.AppendMenu(MF_STRING, idNewTab, strItem);

		if (!m_wndNewTab.IsWindowEnabled())
		{
			menu.EnableMenuItem(idNewTab, MF_GRAYED);
		}

		m_wndNewGroup.GetWindowText(strItem);
		menu.AppendMenu(MF_STRING, idNewGroup, strItem);

		if (!m_wndNewGroup.IsWindowEnabled())
		{
			menu.EnableMenuItem(idNewGroup, MF_GRAYED);
		}

		menu.AppendMenu (MF_SEPARATOR);

		m_wndRename.GetWindowText(strItem);
		menu.AppendMenu(MF_STRING, idRename, strItem);

		if (!m_wndRename.IsWindowEnabled())
		{
			menu.EnableMenuItem(idRename, MF_GRAYED);
		}
		
		strItem.LoadString(IDS_BCGBARRES_DELETE);
		menu.AppendMenu(MF_STRING, idRemove, strItem);
		
		if (!m_wndRemove.IsWindowEnabled())
		{
			menu.EnableMenuItem(idRemove, MF_GRAYED);
		}

		menu.AppendMenu (MF_SEPARATOR);

		strItem.LoadString(IDS_BCGBARRES_MOVEUP);
		menu.AppendMenu(MF_STRING, idMoveUp, strItem);

		if (!m_wndUp.IsWindowEnabled())
		{
			menu.EnableMenuItem(idMoveUp, MF_GRAYED);
		}

		strItem.LoadString(IDS_BCGBARRES_MOVEDN);
		menu.AppendMenu(MF_STRING, idMoveDown, strItem);

		if (!m_wndDown.IsWindowEnabled())
		{
			menu.EnableMenuItem(idMoveDown, MF_GRAYED);
		}
	}

	HWND hwndThis = GetSafeHwnd ();

	CPoint pt = point;
	if (pt == CPoint(-1, -1))
	{
		CBCGPGridRow* pRow = pTreeCtrl->GetCurSel();
		if (pRow != NULL)
		{
			CRect rectRow = pRow->GetRect();
			pt  = CPoint(rectRow.left, rectRow.bottom + 1);
		}
		else
		{
			pt = CPoint (0, 0);
		}
	}

	pTreeCtrl->ClientToScreen(&pt);

	int nMenuResult = 0;
	
	if (g_pContextMenuManager != NULL)
	{
		nMenuResult = g_pContextMenuManager->TrackPopupMenu(menu, pt.x, pt.y, pTreeCtrl);
	}
	else
	{
		nMenuResult = ::TrackPopupMenu (menu, 
			TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, 
			pt.x, pt.y, 0, pTreeCtrl->GetSafeHwnd (), NULL);
	}

	if (!::IsWindow (hwndThis))
	{
		return;
	}

	switch (nMenuResult)
	{
	case idNewTab:
		OnNewTab();
		break;

	case idNewGroup:
		OnNewGroup();
		break;

	case idRename:
		OnRename();
		break;

	case idMoveUp:
		OnUp();
		break;

	case idMoveDown:
		OnDown();
		break;

	case idRemove:
		OnRemove();
		break;
	}
}