//*********************************************************************************************************** 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); }
HRESULT GLWindow::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { if (bDummy) return DefWindowProc(m_hwnd, uMsg, wParam, lParam); int ll = (int)(short)LOWORD(lParam); int hl = (int)(short)HIWORD(lParam); OnMessage(uMsg, wParam, lParam); switch(uMsg) { case WM_CREATE: initRC(); OnCreate(); return 0; case WM_PAINT: this->Redraw(); ValidateRect(m_hwnd, NULL); return 0; case WM_SIZE: OnSize(ll, hl); return 0; case WM_LBUTTONDOWN: OnMouseDown(MouseButton::LBUTTON, ll, hl); SetCapture(m_hwnd); return 0; case WM_MBUTTONDOWN: OnMouseDown(MouseButton::MBUTTON, ll, hl); SetCapture(m_hwnd); return 0; case WM_RBUTTONDOWN: OnMouseDown(MouseButton::RBUTTON, ll, hl); SetCapture(m_hwnd); return 0; case WM_LBUTTONUP: OnMouseUp(MouseButton::LBUTTON, ll, hl); ReleaseCapture(); return 0; case WM_MBUTTONUP: OnMouseUp(MouseButton::MBUTTON, ll, hl); ReleaseCapture(); return 0; case WM_RBUTTONUP: OnMouseUp(MouseButton::RBUTTON, ll, hl); ReleaseCapture(); return 0; case WM_LBUTTONDBLCLK: OnMouseDblClick(MouseButton::LBUTTON, ll, hl); return 0; case WM_MBUTTONDBLCLK: OnMouseDblClick(MouseButton::MBUTTON, ll, hl); return 0; case WM_RBUTTONDBLCLK: OnMouseDblClick(MouseButton::RBUTTON, ll, hl); return 0; case WM_MOUSEMOVE: OnMouseMove(wParam, ll, hl); return 0; case WM_MOUSEWHEEL: OnMouseWheel(HIWORD(wParam), LOWORD(wParam), ll, hl); return 0; case WM_KEYDOWN: OnKeyDown(wParam); return 0; case WM_KEYUP: OnKeyUp(wParam); return 0; case WM_CHAR: OnChar(wParam); return 0; case WM_TIMER: OnTimer(); return 0; case WM_ACTIVATE: { WORD active = LOWORD(wParam); if (active == WA_INACTIVE) { if (bFullScreen) { ShowWindow(m_hwnd, SW_SHOWMINIMIZED); ChangeDisplaySettings(NULL, 0); } } else { SetFocus(m_hwnd); if (bFullScreen) changeDisplaySettings(); } return 0; } case WM_DESTROY: OnDestroy(); delete m_rc; ReleaseDC(m_hwnd, m_hdc); return 0; } return DefWindowProc(m_hwnd, uMsg, wParam, lParam); }