LRESULT CMainFrame::OnToolbarContextMenu(WPARAM,LPARAM lp) { CPoint point (BCG_GET_X_LPARAM(lp), BCG_GET_Y_LPARAM(lp)); CMenu menu; VERIFY(menu.LoadMenu (IDR_POPUP_TOOLBAR)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); CBCGPPopupMenu* pPopupMenu = new CBCGPPopupMenu; pPopupMenu->Create (this, point.x, point.y, pPopup->Detach ()); return 0; }
LRESULT CMainFrame::OnToolbarContextMenu(WPARAM wp,LPARAM lp) { CBCGPToolBar* pToolBar = DYNAMIC_DOWNCAST (CBCGPToolBar, CWnd::FromHandlePermanent ((HWND) wp)); m_bMainToolbarMenu = ( pToolBar != NULL && pToolBar->GetDlgCtrlID () == AFX_IDW_TOOLBAR); CPoint point (BCG_GET_X_LPARAM(lp), BCG_GET_Y_LPARAM(lp)); CMenu menu; VERIFY(menu.LoadMenu (IDR_POPUP_TOOLBAR)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); CBCGPPopupMenu* pPopupMenu = new CBCGPPopupMenu; pPopupMenu->Create (this, point.x, point.y, pPopup->Detach ()); return 0; }
//*************************************************************************** BOOL CLoginBarToolTipCtrl::PreTranslateMessage(MSG* pMsg) { if (pMsg->message >= WM_MOUSEFIRST && pMsg->message <= WM_MOUSELAST) { if (pMsg->message != WM_MOUSEMOVE) { Hide (); } ASSERT_VALID (m_pWndParent); // the parent should receive the mouse message in its client coordinates CPoint pt(BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); MapWindowPoints (m_pWndParent, &pt, 1); LPARAM lParam = MAKELPARAM (pt.x, pt.y); m_pWndParent->SendMessage (pMsg->message, pMsg->wParam, lParam); return TRUE; } return CWnd::PreTranslateMessage(pMsg); }
LRESULT CBCGPPlannerManagerView::OnNotifyLButtonDblClk (WPARAM wParam, LPARAM lParam) { CPoint pt(BCG_GET_X_LPARAM(lParam), BCG_GET_Y_LPARAM(lParam)); OnDblClkCtrl ((UINT) wParam, pt); return 0L; }
//******************************************************************************************* BOOL CBCGPOleDocIPFrameWnd::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_KEYDOWN: if (!CBCGPFrameImpl::IsHelpKey (pMsg) && m_Impl.ProcessKeyboard ((int) pMsg->wParam)) { return TRUE; } break; case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_RBUTTONDBLCLK: case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_MBUTTONDBLCLK: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle(pMsg->hwnd); if (pWnd != NULL && ::IsWindow (pMsg->hwnd)) { pWnd->ClientToScreen (&pt); } if (m_Impl.ProcessMouseClick (pMsg->message, pt, pMsg->hwnd)) { return TRUE; } if (!::IsWindow (pMsg->hwnd)) { return TRUE; } } break; case WM_NCLBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: case WM_NCMBUTTONDOWN: case WM_NCMBUTTONUP: if (m_Impl.ProcessMouseClick (pMsg->message, CPoint (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)), pMsg->hwnd)) { return TRUE; } break; case WM_MOUSEMOVE: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle(pMsg->hwnd); if (pWnd != NULL) { pWnd->ClientToScreen (&pt); } if (m_Impl.ProcessMouseMove (pt)) { return TRUE; } } } return CFrameWnd::PreTranslateMessage(pMsg); }
//******************************************************************************************* BOOL CBCGPFrameWnd::PreTranslateMessage(MSG* pMsg) { BOOL bProcessAccel = TRUE; switch (pMsg->message) { case WM_SYSKEYDOWN: #ifndef BCGP_EXCLUDE_RIBBON if (m_Impl.m_pRibbonBar != NULL && m_Impl.m_pRibbonBar->OnSysKeyDown (this, pMsg->wParam, pMsg->lParam)) { return TRUE; } if (pMsg->wParam == VK_F4 && m_Impl.m_pRibbonBar != NULL && m_Impl.m_pRibbonBar->IsBackstageViewActive()) { break; } #endif if (CBCGPPopupMenu::GetSafeActivePopupMenu() == NULL) { m_Impl.CancelToolbarMode(); } case WM_CONTEXTMENU: if (!globalData.m_bSysUnderlineKeyboardShortcuts && !globalData.m_bUnderlineKeyboardShortcuts) { globalData.m_bUnderlineKeyboardShortcuts = TRUE; CBCGPToolBar::RedrawUnderlines (); } if (CBCGPPopupMenu::GetSafeActivePopupMenu() != NULL && (pMsg->wParam == VK_MENU || pMsg->wParam == VK_F10)) { CBCGPPopupMenu::m_pActivePopupMenu->SendMessage (WM_CLOSE); return TRUE; } else if (m_Impl.ProcessKeyboard ((int) pMsg->wParam)) { return TRUE; } break; case WM_SYSKEYUP: if (m_Impl.ProcessSysKeyUp(pMsg->wParam, pMsg->lParam)) { return TRUE; } break; case WM_KEYDOWN: //----------------------------------------- // Pass keyboard action to the active menu: //----------------------------------------- if (!CBCGPFrameImpl::IsHelpKey (pMsg) && m_Impl.ProcessKeyboard ((int) pMsg->wParam, &bProcessAccel)) { return TRUE; } if (pMsg->wParam == VK_ESCAPE) { if (IsFullScreen()) { if (!IsPrintPreview()) { m_Impl.InvokeFullScreenCommand(); return TRUE; } } CBCGPSmartDockingManager* pSDManager = NULL; if ((pSDManager = m_dockManager.GetSDManagerPermanent()) != NULL && pSDManager->IsStarted()) { pSDManager->CauseCancelMode (); } CBCGPSlider* pSlider = DYNAMIC_DOWNCAST (CBCGPSlider, GetCapture ()); if (pSlider != NULL) { pSlider->SendMessage (WM_CANCELMODE); return TRUE; } } if (!bProcessAccel) { return FALSE; } break; case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_MBUTTONDOWN: case WM_MBUTTONUP: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle (pMsg->hwnd); if (pWnd != NULL && ::IsWindow (pMsg->hwnd)) { pWnd->ClientToScreen (&pt); } if (m_Impl.ProcessMouseClick (pMsg->message, pt, pMsg->hwnd)) { return TRUE; } if (!::IsWindow (pMsg->hwnd)) { return TRUE; } } break; case WM_NCLBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: case WM_NCMBUTTONDOWN: case WM_NCMBUTTONUP: if (m_Impl.ProcessMouseClick (pMsg->message, CPoint (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)), pMsg->hwnd)) { return TRUE; } break; case WM_MOUSEWHEEL: if (m_Impl.ProcessMouseWheel (pMsg->wParam, pMsg->lParam)) { return TRUE; } break; case WM_MOUSEMOVE: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle (pMsg->hwnd); if (pWnd != NULL) { pWnd->ClientToScreen (&pt); } if (m_Impl.ProcessMouseMove (pt)) { return TRUE; } } } return CFrameWnd::PreTranslateMessage(pMsg); }
//************************************************************************************** BOOL CBCGPDlgImpl::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_SYSKEYDOWN: case WM_CONTEXTMENU: if (CBCGPPopupMenu::GetActiveMenu() != NULL && ::IsWindow (CBCGPPopupMenu::GetActiveMenu()->m_hWnd) && pMsg->wParam == VK_MENU) { CBCGPPopupMenu::GetActiveMenu()->SendMessage (WM_CLOSE); return TRUE; } break; case WM_SYSKEYUP: if (CBCGPPopupMenu::GetActiveMenu() != NULL && ::IsWindow (CBCGPPopupMenu::GetActiveMenu()->m_hWnd)) { return TRUE; // To prevent system menu opening } break; case WM_KEYDOWN: //----------------------------------------- // Pass keyboard action to the active menu: //----------------------------------------- if (CBCGPPopupMenu::GetActiveMenu() != NULL && ::IsWindow (CBCGPPopupMenu::GetActiveMenu()->m_hWnd)) { CBCGPPopupMenu::GetActiveMenu()->SendMessage (WM_KEYDOWN, (int) pMsg->wParam); return TRUE; } #ifndef BCGP_EXCLUDE_RIBBON #ifndef _BCGSUITE_ if (m_bBackstageMode && (pMsg->wParam == VK_HOME || pMsg->wParam == VK_ESCAPE)) { for (CWnd* pWndParent = m_Dlg.GetParent(); pWndParent != NULL; pWndParent = pWndParent->GetParent()) { CBCGPRibbonBackstageView* pView = DYNAMIC_DOWNCAST(CBCGPRibbonBackstageView, pWndParent); if (pView != NULL) { if (pMsg->wParam == VK_HOME) { #define MAX_CLASS_NAME 255 #define EDIT_CLASS _T("Edit") TCHAR lpszClassName [MAX_CLASS_NAME + 1]; if (CWnd::GetFocus()->GetSafeHwnd() != NULL) { ::GetClassName (CWnd::GetFocus()->GetSafeHwnd (), lpszClassName, MAX_CLASS_NAME); CString strClass = lpszClassName; if (strClass == EDIT_CLASS) { return FALSE; } } pView->SetFocus(); } else // Escape { pView->SendMessage(WM_CLOSE); } return TRUE; } } return TRUE; } #endif #endif break; case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_MBUTTONDOWN: case WM_MBUTTONUP: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle (pMsg->hwnd); if (pWnd != NULL && ::IsWindow (pMsg->hwnd)) { pWnd->ClientToScreen (&pt); } if (ProcessMouseClick (pt)) { return TRUE; } if (!::IsWindow (pMsg->hwnd)) { return TRUE; } } break; case WM_NCLBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: case WM_NCMBUTTONDOWN: case WM_NCMBUTTONUP: if (ProcessMouseClick (CPoint (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)))) { return TRUE; } if (pMsg->message == WM_NCRBUTTONUP && pMsg->hwnd == m_Dlg.GetSafeHwnd () && IsOwnerDrawCaption ()) { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_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); if (uiRes != 0) { m_Dlg.SendMessage (WM_SYSCOMMAND, uiRes); return TRUE; } } } } break; case WM_MOUSEWHEEL: if (CBCGPPopupMenu::GetActiveMenu() != NULL && ::IsWindow (CBCGPPopupMenu::GetActiveMenu()->m_hWnd) && CBCGPPopupMenu::GetActiveMenu()->IsScrollable ()) { CBCGPPopupMenu::GetActiveMenu()->SendMessage (WM_MOUSEWHEEL, pMsg->wParam, pMsg->lParam); } #ifndef BCGP_EXCLUDE_RIBBON #ifndef _BCGSUITE_ else { CPoint ptCursor; ::GetCursorPos (&ptCursor); CWnd* pWnd = CWnd::WindowFromPoint(ptCursor); CBCGPRibbonGalleryCtrl* pGalleryCtrl = DYNAMIC_DOWNCAST(CBCGPRibbonGalleryCtrl, pWnd); if (pGalleryCtrl != NULL) { pGalleryCtrl->SendMessage (WM_MOUSEWHEEL, pMsg->wParam, pMsg->lParam); return TRUE; } } #endif #endif break; case WM_MOUSEMOVE: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle (pMsg->hwnd); if (pWnd != NULL) { pWnd->ClientToScreen (&pt); } if (ProcessMouseMove (pt)) { return TRUE; } } } return FALSE; }
//******************************************************************************************* BOOL CBCGOleDocIPFrameWnd::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_KEYDOWN: if (!CBCGFrameImpl::IsHelpKey (pMsg) && m_Impl.ProcessKeyboard ((int) pMsg->wParam)) { return TRUE; } break; case WM_LBUTTONDOWN: case WM_LBUTTONDBLCLK: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_RBUTTONDBLCLK: case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_MBUTTONDBLCLK: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle(pMsg->hwnd); if (!::IsWindow (pMsg->hwnd)) { return TRUE; } if (pWnd != NULL) { pWnd->ClientToScreen (&pt); } if (m_Impl.ProcessMouseClick (pMsg->message, pt, pMsg->hwnd)) { return TRUE; } if (!::IsWindow (pMsg->hwnd)) { return TRUE; } if (pMsg->message == WM_RBUTTONUP && !CBCGToolBar::IsCustomizeMode ()) { //--------------------------------------- // Activate the control bar context menu: //--------------------------------------- CDockBar* pBar = DYNAMIC_DOWNCAST(CDockBar, pWnd); if (pBar != NULL) { CPoint pt; pt.x = BCG_GET_X_LPARAM(pMsg->lParam); pt.y = BCG_GET_Y_LPARAM(pMsg->lParam); pBar->ClientToScreen(&pt); SendMessage (BCGM_TOOLBARMENU, (WPARAM) GetSafeHwnd (), MAKELPARAM (pt.x, pt.y)); } } } break; case WM_NCLBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: case WM_NCMBUTTONDOWN: case WM_NCMBUTTONUP: if (m_Impl.ProcessMouseClick (pMsg->message, CPoint (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)), pMsg->hwnd)) { return TRUE; } break; case WM_MOUSEMOVE: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle(pMsg->hwnd); if (pWnd != NULL) { pWnd->ClientToScreen (&pt); } if (m_Impl.ProcessMouseMove (pt)) { return TRUE; } } } return CFrameWnd::PreTranslateMessage(pMsg); }
//*********************************************************************************************************** BOOL CBCGPBaseVisualCtrl::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_KEYDOWN: case WM_SYSKEYDOWN: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MBUTTONUP: case WM_NCLBUTTONDOWN: case WM_NCRBUTTONDOWN: case WM_NCMBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCRBUTTONUP: case WM_NCMBUTTONUP: case WM_MOUSEMOVE: if (m_pToolTip->GetSafeHwnd () != NULL) { m_pToolTip->RelayEvent(pMsg); } } switch (pMsg->message) { case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: if (pMsg->hwnd == GetSafeHwnd()) { if (!m_bIsPopup) { SetFocus(); } CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); if (OnMouseDown(pMsg->message == WM_LBUTTONDOWN ? 0 : pMsg->message == WM_RBUTTONDOWN ? 1 : 2, pt)) { #if !defined _BCGPCHART_STANDALONE if (CBCGPPopupMenu::GetActiveMenu() != NULL && ::IsWindow (CBCGPPopupMenu::GetActiveMenu()->m_hWnd)) { CBCGPPopupMenu::GetActiveMenu()->SendMessage (WM_CLOSE); } #endif SetCapture(); m_bIsCaptured = TRUE; StartClickAndHold(); return TRUE; } } break; case WM_LBUTTONUP: case WM_RBUTTONUP: case WM_MBUTTONUP: if (pMsg->hwnd == GetSafeHwnd()) { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); OnMouseUp(pMsg->message == WM_LBUTTONUP ? 0 : pMsg->message == WM_RBUTTONUP ? 1 : 2, pt); if (m_bIsCaptured) { ReleaseCapture(); m_bIsCaptured = FALSE; } StopClickAndHold(); } break; case WM_LBUTTONDBLCLK: case WM_RBUTTONDBLCLK: case WM_MBUTTONDBLCLK: if (pMsg->hwnd == GetSafeHwnd()) { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); OnMouseDblClick(pMsg->message == WM_LBUTTONDBLCLK ? 0 : pMsg->message == WM_RBUTTONDBLCLK ? 1 : 2, pt); } break; case WM_MOUSEWHEEL: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); CWnd* pWnd = CWnd::FromHandle (pMsg->hwnd); if (pWnd != NULL) { pWnd->ScreenToClient(&pt); } if (OnMouseWheel(pt, HIWORD(pMsg->wParam))) { if (m_pToolTip->GetSafeHwnd () != NULL) { m_pToolTip->Pop(); } return TRUE; } } break; case WM_MOUSEMOVE: { CPoint pt (BCG_GET_X_LPARAM(pMsg->lParam), BCG_GET_Y_LPARAM(pMsg->lParam)); OnMouseMove(pt); if (!m_bIsTracked) { m_bIsTracked = TRUE; TRACKMOUSEEVENT trackmouseevent; trackmouseevent.cbSize = sizeof(trackmouseevent); trackmouseevent.dwFlags = TME_LEAVE; trackmouseevent.hwndTrack = GetSafeHwnd(); trackmouseevent.dwHoverTime = HOVER_DEFAULT; ::BCGPTrackMouse (&trackmouseevent); } if (m_pToolTip->GetSafeHwnd () != NULL) { CString strToolTip; CString strDescr; OnGetToolTip(pt, strToolTip, strDescr); if (strToolTip != m_strLastDisplayedToolTip || strDescr != m_strLastDisplayedToolTipDescr) { if (m_bTooltipTrackingMode) { m_pToolTip->Update(); } else { m_pToolTip->Pop (); } if (!strToolTip.IsEmpty() && !strDescr.IsEmpty()) { m_bToolTipCleared = TRUE; } } } } break; case WM_CANCELMODE: if (m_bIsCaptured) { ReleaseCapture(); m_bIsCaptured = FALSE; OnCancelMode(); } StopClickAndHold(); break; case WM_KEYDOWN: if (pMsg->wParam == VK_ESCAPE) { if (OnKeyboardDown((UINT)pMsg->wParam, (pMsg->lParam & 0xFFFF), 0)) { return TRUE; } } break; case WM_TIMER: if (pMsg->hwnd == GetSafeHwnd() && pMsg->wParam == GetClickAndHoldID()) { CPoint point; ::GetCursorPos (&point); ScreenToClient (&point); if (GetClickAndHoldRect().PtInRect(point)) { OnClickAndHoldEvent(GetClickAndHoldID(), point); return TRUE; } } break; } return CStatic::PreTranslateMessage(pMsg); }