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); }
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; }
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; }