void CXTPMouseManager::DeliverMessage(CXTPCommandBar* pCapture, WPARAM wParam, POINT pt) { if (!pCapture->GetSafeHwnd()) return; switch (wParam) { case WM_MOUSEMOVE: case WM_NCMOUSEMOVE: if (pCapture->m_nLockRecurse <= 0) { pCapture->ScreenToClient(&pt); pCapture->OnMouseMove(0, pt); } break; case WM_LBUTTONDOWN: case WM_NCLBUTTONDOWN: case WM_RBUTTONDOWN: case WM_NCRBUTTONDOWN: case WM_MBUTTONDOWN: case WM_NCMBUTTONDOWN: SendTrackLost(); break; case WM_LBUTTONUP: case WM_NCLBUTTONUP: if (!IsMouseLocked()) SendTrackLost(); break; } }
INT_PTR CXTPTabManager::PerformToolHitTest(HWND hWnd, CPoint point, TOOLINFO* pTI) const { if (IsMouseLocked()) return -1; int nIndex = -1; CXTPTabManagerNavigateButton* pNavigateButton = HitTestNavigateButton(point, FALSE, &nIndex); if (pNavigateButton) { ASSERT(nIndex != -1); CString strTip = pNavigateButton->GetTooltip(); if (strTip.IsEmpty()) return -1; CXTPToolTipContext::FillInToolInfo(pTI, hWnd, pNavigateButton->GetRect(), nIndex, strTip); return nIndex; } CXTPTabManagerItem* pItem = HitTest(point); if (pItem) { if (GetPaintManager()->m_toolBehaviour == xtpTabToolTipNever) return -1; if (GetPaintManager()->m_toolBehaviour == xtpTabToolTipShrinkedOnly && !pItem->IsItemShrinked()) return -1; CString strTip = GetItemTooltip(pItem); if (strTip.IsEmpty()) return -1; CXTPToolTipContext::FillInToolInfo(pTI, hWnd, pItem->GetRect(), pItem->GetIndex(), strTip, pItem->GetCaption(), strTip); return pItem->GetIndex(); } return -1; }
void CXTPTabManager::PerformMouseMove(HWND hWnd, CPoint pt) { CXTPTabPaintManager::CAppearanceSet* pAppearance = GetPaintManager()->GetAppearanceSet(); if (!CXTPDrawHelpers::IsTopParentActive(hWnd) || IsMouseLocked()) { if (m_pHighlighted) { CRect rcRedraw(pAppearance->GetButtonDrawRect(m_pHighlighted)); m_pHighlighted = NULL; RedrawControl(rcRedraw, TRUE); } return; } if (GetPaintManager()->m_bHotTracking) { CXTPTabManagerItem* pItem = HitTest(pt); if (pItem != m_pHighlighted) { if (m_pHighlighted) { CRect rcRedraw(pAppearance->GetButtonDrawRect(m_pHighlighted)); m_pHighlighted = NULL; RedrawControl(rcRedraw, TRUE); } m_pHighlighted = pItem; if (m_pHighlighted) { RedrawControl(pAppearance->GetButtonDrawRect(m_pHighlighted), FALSE); } if (pItem) { TRACKMOUSEEVENT tme = { sizeof(TRACKMOUSEEVENT), TME_LEAVE, hWnd }; _TrackMouseEvent(&tme); } } } CXTPTabManagerNavigateButton* pNavigateButton = HitTestNavigateButton(pt, FALSE); if (pNavigateButton != m_pHighlightedNavigateButton) { if (m_pHighlightedNavigateButton) { RedrawControl(m_pHighlightedNavigateButton->GetRect(), TRUE); } m_pHighlightedNavigateButton = pNavigateButton; if (m_pHighlightedNavigateButton) { RedrawControl(m_pHighlightedNavigateButton->GetRect(), FALSE); } if (pNavigateButton) { TRACKMOUSEEVENT tme = { sizeof(TRACKMOUSEEVENT), TME_LEAVE, hWnd }; _TrackMouseEvent(&tme); } } }