Example #1
0
BOOL TexturePopup::PreTranslateMessage(MSG* pMsg)
{
	switch (pMsg->message)
	{
	case WM_LBUTTONDOWN:
	case WM_RBUTTONDOWN:
	case WM_MBUTTONDOWN:
		{
			CRect rect;
			GetClientRect (rect);
			CPoint pt (AFX_GET_X_LPARAM (pMsg->lParam), AFX_GET_Y_LPARAM (pMsg->lParam));
			if (!rect.PtInRect (pt))
			{
				OnClose();
				return TRUE;
			}
		}
		break;

	case WM_SYSKEYDOWN:
	case WM_CONTEXTMENU:
		OnClose();
		return TRUE;
	case WM_KEYDOWN:
		if (pMsg->wParam == VK_ESCAPE)
		{
			OnClose();
			return TRUE;
		}
	}
	return CMFCPopupMenu::PreTranslateMessage(pMsg);
}
Example #2
0
LRESULT CMainFrame::OnToolbarContextMenu(WPARAM,LPARAM lp)
{
	CPoint point (AFX_GET_X_LPARAM(lp), AFX_GET_Y_LPARAM(lp));

	CMenu menu;
	VERIFY(menu.LoadMenu (IDR_POPUP_TOOLBAR));

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

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

	return 0;
}
Example #3
0
BOOL CKofDlgImpl::PreTranslateMessage( MSG* pMsg )
{
	switch (pMsg->message)
	{
		case WM_NCRBUTTONUP:
			if (pMsg->message == WM_NCRBUTTONUP && pMsg->hwnd == m_Dlg.GetSafeHwnd () && IsOwnerDrawCaption ())
			{
				CPoint pt (AFX_GET_X_LPARAM(pMsg->lParam), AFX_GET_Y_LPARAM(pMsg->lParam));

				UINT nHit = OnNcHitTest (pt);

				if (nHit == HTCAPTION || nHit == HTSYSMENU)
				{
					CMenu* pMenu = m_Dlg.GetSystemMenu (FALSE);
					if (pMenu->GetSafeHmenu () != NULL && ::IsMenu (pMenu->GetSafeHmenu ()))
					{
						/*UINT uiRes = ::TrackPopupMenu (pMenu->GetSafeHmenu(), TPM_LEFTBUTTON | TPM_RETURNCMD, 
							pt.x, pt.y, 0, m_Dlg.GetSafeHwnd (), NULL);*/

						UINT uiRes = 0;
						if (((CWinAppEx*)AfxGetApp())->GetContextMenuManager() != NULL)
						{
							((CWinAppEx*)AfxGetApp())->GetContextMenuManager()->ShowPopupMenu(pMenu->GetSafeHmenu(), pt.x, pt.y, &m_Dlg, TRUE);
						} 
						else
						{
							uiRes = ::TrackPopupMenu (pMenu->GetSafeHmenu(), TPM_LEFTBUTTON | TPM_RETURNCMD, 
								pt.x, pt.y, 0, m_Dlg.GetSafeHwnd (), NULL);
						}

						if (uiRes != 0)
						{
							m_Dlg.SendMessage (WM_SYSCOMMAND, uiRes);
							return TRUE;
						}
					}

				}
			}
			break;
	}

	return FALSE;
}