void CPlayerSeekBar::SetPosInternal(__int64 pos) { if(m_pos == pos) return; CRect before = GetThumbRect(); m_pos = min(max(pos, m_start), m_stop); m_posreal = pos; CRect after = GetThumbRect(); if(before != after) InvalidateRect(before | after); }
void ThumbInfo::OnLButtonUp() { RECT rcMiranda; RECT rcThumb; RECT rcOverlap; if (!bMouseMoved && fcOpt.bUseSingleClick && bMouseIn) PopupMessageDialog(); if (bMouseDown) { bMouseDown = FALSE; SetCursor(LoadCursor(nullptr, IDC_ARROW)); // Check whether we shoud remove the window GetWindowRect(hwndMiranda, &rcMiranda); GetThumbRect(&rcThumb); if (IntersectRect(&rcOverlap, &rcMiranda, &rcThumb)) { if (IsWindowVisible(hwndMiranda)) { DeleteContactPos(); thumbList.RemoveThumb(this); } } } SaveContactsPos(); }
void CUIVerticalLayout::DoPostPaint(cairo_t *cr, const CUIRect& rcPaint) { if( (m_uButtonState & UISTATE_CAPTURED) != 0 && !m_bImmMode ) { RECT rcSeparator = GetThumbRect(true); CUIRender::DrawColor(cr, rcSeparator, 0xAA000000); } }
LRESULT OnSetThumbBitmap(HWND hwnd, WORD nID, Slider_Info *pInfo) { HBITMAP hbm = LoadBitmap(GetInstance(), MAKEINTRESOURCE(nID)); if (hbm == NULL) { return FALSE; } BITMAP bm; GetObject(hbm, sizeof(BITMAP), &bm); pInfo->pxThumbSize.cx = bm.bmWidth; pInfo->pxThumbSize.cy = bm.bmHeight; if (pInfo->hbmThumb) { DeleteObject(pInfo->hbmThumb); } pInfo->hbmThumb = hbm; GetThumbRect(hwnd, pInfo); return TRUE; }
void CSliderUI::PaintStatusImage(HDC hDC) { CProgressUI::PaintStatusImage(hDC); RECT rcThumb = GetThumbRect(); rcThumb.left -= m_rcItem.left; rcThumb.top -= m_rcItem.top; rcThumb.right -= m_rcItem.left; rcThumb.bottom -= m_rcItem.top; if( (m_uButtonState & UISTATE_CAPTURED) != 0 ) { m_diThumbPushed.rcDestOffset = rcThumb; if( DrawImage(hDC, m_diThumbPushed) ) return; } else if( (m_uButtonState & UISTATE_HOT) != 0 ) { m_diThumbHot.rcDestOffset = rcThumb; if( DrawImage(hDC, m_diThumbHot) ) return; }else if( (m_uButtonState & UISTATE_DISABLED) != 0 ) { m_diThumbDisabled.rcDestOffset = rcThumb; if( DrawImage(hDC, m_diThumbDisabled) ) return; } m_diThumb.rcDestOffset = rcThumb; if( DrawImage(hDC, m_diThumb) ) return; }
void HSliderCtrl::OnPaint() { CPaintDC dc(this); //获取位置 CRect rect; GetClientRect(&rect); //建双缓冲 CImage imgBuffer; CDC dcBuffer; imgBuffer.Create(rect.Width(), rect.Height(), 24); dcBuffer.Attach(imgBuffer.GetDC()); if (!m_imgBk.IsNull()) { m_imgBk.TransparentBlt(dcBuffer.GetSafeHdc(),0,0,rect.Width(),rect.Height(), 0,0,m_imgBk.GetWidth(),m_imgBk.GetHeight()/5,RGB(255,0,255)); CRect thuRect; GetThumbRect(&thuRect); m_imgBk.TransparentBlt(dcBuffer.GetSafeHdc(),thuRect.left,thuRect.top,thuRect.Width(),thuRect.Height(), 0,0+m_imgBk.GetHeight()/5*(m_byThuState+2),11,m_imgBk.GetHeight()/5,RGB(255,0,255)); m_imgBk.TransparentBlt(dcBuffer.GetSafeHdc(),0,0,thuRect.left,rect.Height(), 0,0+m_imgBk.GetHeight()/5,thuRect.left,m_imgBk.GetHeight()/5,RGB(255,0,255)); } //清除缓冲 dc.BitBlt(0, 0, rect.Width(), rect.Height(), &dcBuffer, 0, 0, SRCCOPY); dcBuffer.Detach(); imgBuffer.ReleaseDC(); }
BOOL CSkinItemSlider::GetThumbImgRect(RECT& thumbRect) { CImageBase * pImgThumb = m_pThumbNormalImage; RECT tempRect; GetThumbRect(tempRect); int nThumbWidth = tempRect.right - tempRect.left; int nThumbHeight = tempRect.bottom - tempRect.top; int nTemp = (pImgThumb->Width() - nThumbWidth)/2; thumbRect.left = tempRect.left - nTemp - 2;//奇怪,怎么会偏差了两个象素。。。难道是图片的问题 if (thumbRect.left < 0) { thumbRect.left = 0; } nTemp = (pImgThumb->Height() - nThumbHeight)/2; thumbRect.top = tempRect.top - nTemp; if (thumbRect.top < 0) { thumbRect.top = 0; } thumbRect.right = thumbRect.left + pImgThumb->Width(); thumbRect.bottom = thumbRect.top + pImgThumb->Height(); return TRUE; }
//***************************************************************************************** void CBCGPSliderCtrl::OnMouseMove(UINT nFlags, CPoint point) { BOOL bIsThumbHighligted = m_bIsThumbHighligted; CRect rectThumb; GetThumbRect (rectThumb); m_bIsThumbHighligted = rectThumb.PtInRect (point); CSliderCtrl::OnMouseMove(nFlags, point); if (bIsThumbHighligted != m_bIsThumbHighligted) { RedrawWindow (); } if (!m_bTracked) { m_bTracked = TRUE; TRACKMOUSEEVENT trackmouseevent; trackmouseevent.cbSize = sizeof(trackmouseevent); trackmouseevent.dwFlags = TME_LEAVE; trackmouseevent.hwndTrack = GetSafeHwnd(); trackmouseevent.dwHoverTime = HOVER_DEFAULT; ::BCGPTrackMouse (&trackmouseevent); } }
void ZSlider::PaintStatusImage(ZRenerder* hDC) { ZProgress::PaintStatusImage(hDC); RECT rcThumb = GetThumbRect(); rcThumb.left -= m_rcItem.left; rcThumb.top -= m_rcItem.top; rcThumb.right -= m_rcItem.left; rcThumb.bottom -= m_rcItem.top; if( (m_uButtonState & UISTATE_CAPTURED) != 0 ) { if( !m_sThumbPushedImage.IsEmpty() ) { m_sImageModify.Empty(); m_sImageModify.Format("dest='%d,%d,%d,%d'", rcThumb.left, rcThumb.top, rcThumb.right, rcThumb.bottom); if( !DrawImage(hDC, (const char*)m_sThumbPushedImage, (const char*)m_sImageModify) ) m_sThumbPushedImage.Empty(); else return; } } else if( (m_uButtonState & UISTATE_HOT) != 0 ) { if( !m_sThumbHotImage.IsEmpty() ) { m_sImageModify.Empty(); m_sImageModify.Format("dest='%d,%d,%d,%d'", rcThumb.left, rcThumb.top, rcThumb.right, rcThumb.bottom); if( !DrawImage(hDC, (const char*)m_sThumbHotImage, (const char*)m_sImageModify) ) m_sThumbHotImage.Empty(); else return; } } if( !m_sThumbImage.IsEmpty() ) { m_sImageModify.Empty(); m_sImageModify.Format("dest='%d,%d,%d,%d'", rcThumb.left, rcThumb.top, rcThumb.right, rcThumb.bottom); if( !DrawImage(hDC, (const char*)m_sThumbImage, (const char*)m_sImageModify) ) m_sThumbImage.Empty(); else return; } }
void CHorizontalLayoutUI::DoPostPaint(HDC hDC, const RECT& rcPaint) { if( (m_uButtonState & UISTATE_CAPTURED) != 0 && !m_bImmMode ) { RECT rcSeparator = GetThumbRect(true); CRenderEngine::DrawColor(hDC, rcSeparator, 0xAA000000); } }
void CSliderUI::PaintStatusImage(HDC hDC) { CProgressUI::PaintStatusImage(hDC); RECT rcThumb = GetThumbRect(); rcThumb.left -= m_rcItem.left; rcThumb.top -= m_rcItem.top; rcThumb.right -= m_rcItem.left; rcThumb.bottom -= m_rcItem.top; if( (m_uButtonState & UISTATE_CAPTURED) != 0 ) { if( !m_sThumbPushedImage.IsEmpty() ) { m_sImageModify.Empty(); m_sImageModify.SmallFormat(_T("dest='%d,%d,%d,%d'"), rcThumb.left, rcThumb.top, rcThumb.right, rcThumb.bottom); if( !DrawImage(hDC, (LPCTSTR)m_sThumbPushedImage, (LPCTSTR)m_sImageModify) ) m_sThumbPushedImage.Empty(); else return; } } else if( (m_uButtonState & UISTATE_HOT) != 0 ) { if( !m_sThumbHotImage.IsEmpty() ) { m_sImageModify.Empty(); m_sImageModify.SmallFormat(_T("dest='%d,%d,%d,%d'"), rcThumb.left, rcThumb.top, rcThumb.right, rcThumb.bottom); if( !DrawImage(hDC, (LPCTSTR)m_sThumbHotImage, (LPCTSTR)m_sImageModify) ) m_sThumbHotImage.Empty(); else return; } } if( !m_sThumbImage.IsEmpty() ) { m_sImageModify.Empty(); m_sImageModify.SmallFormat(_T("dest='%d,%d,%d,%d'"), rcThumb.left, rcThumb.top, rcThumb.right, rcThumb.bottom); if( !DrawImage(hDC, (LPCTSTR)m_sThumbImage, (LPCTSTR)m_sImageModify) ) m_sThumbImage.Empty(); else return; } }
void CListHeaderItemUI::Event(TEventUI& event) { if( event.Type == UIEVENT_BUTTONDOWN && IsEnabled() ) { RECT rcSeparator = GetThumbRect(m_rcItem); if( ::PtInRect(&rcSeparator, event.ptMouse) ) { m_uDragState |= UISTATE_CAPTURED; ptLastMouse = event.ptMouse; m_pManager->SendNotify(this, _T("headerdragging")); } else { m_pManager->SendNotify(this, _T("headerclick")); } } if( event.Type == UIEVENT_BUTTONUP ) { if( (m_uDragState & UISTATE_CAPTURED) != 0 ) { m_uDragState &= ~UISTATE_CAPTURED; m_pManager->SendNotify(this, _T("headerdragged")); m_pManager->UpdateLayout(); } } if( event.Type == UIEVENT_MOUSEMOVE ) { if( (m_uDragState & UISTATE_CAPTURED) != 0 ) { RECT rc = m_rcItem; rc.right -= ptLastMouse.x - event.ptMouse.x; const int MIN_DRAGSIZE = 40; if( rc.right - rc.left > MIN_DRAGSIZE ) { m_rcItem = rc; m_cxWidth = rc.right - rc.left; ptLastMouse = event.ptMouse; m_pParent->Invalidate(); } } } if( event.Type == UIEVENT_SETCURSOR ) { RECT rcSeparator = GetThumbRect(m_rcItem); if( IsEnabled() && ::PtInRect(&rcSeparator, event.ptMouse) ) { ::SetCursor(::LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE))); return; } } CControlUI::Event(event); }
void ThumbInfo::OnMouseMove(int nX, int nY) { // Position thumb if (bMouseDown) { POINT ptNew = { nX, nY }; ClientToScreen(hwnd, &ptNew); int dX = ptNew.x - ptOld.x; int dY = ptNew.y - ptOld.y; if (dX || dY) { bMouseMoved = TRUE; nLeft += dX; nTop += dY; PositionThumb(nLeft, nTop); } ptOld = ptNew; } else SetCursor(LoadCursor(nullptr, IDC_ARROW)); // Update selection status if (!pThumbMouseIn) { SetTimer(hwnd, TIMERID_LEAVE_T, 10, nullptr); pThumbMouseIn = this; ThumbSelect(TRUE); } if (bEnableTip && fcOpt.bShowTip && !bMouseDown) { WORD tmpTimeIn; POINT pt; RECT rc; GetCursorPos(&pt); GetThumbRect(&rc); if (!PtInRect(&rc, pt)) { KillTip(); return; } if (fTipTimerActive && abs(pt.x - ptTipSt.x) < 5 && abs(pt.y - ptTipSt.x) < 5) return; ptTipSt = pt; if (fTipTimerActive) KillTimer(hwnd, TIMERID_HOVER_T); if (fTipActive) return; tmpTimeIn = (fcOpt.TimeIn > 0) ? fcOpt.TimeIn : CallService(MS_CLC_GETINFOTIPHOVERTIME, 0, 0); SetTimer(hwnd, TIMERID_HOVER_T, tmpTimeIn, nullptr); fTipTimerActive = TRUE; } }
void CmusikTrackCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult) { LPNMCUSTOMDRAW lpcd = (LPNMCUSTOMDRAW)pNMHDR; // CDDS_PREPAINT is at the beginning of the paint cycle. // this will fire first, so we tell it we want // all item drawing information... if ( lpcd->dwDrawStage == CDDS_PREPAINT ) { // Request prepaint notifications for each item. *pResult = CDRF_NOTIFYITEMDRAW; return; } // CDDS_ITEMPREPAINT is sent when an item is about // to be drawn.. if ( lpcd->dwDrawStage == CDDS_ITEMPREPAINT ) { CDC *pDC = CDC::FromHandle( lpcd->hdc ); CRect rect( lpcd->rc ); // we don't want to draw any ticks, // so just skip the default action // and return... if ( lpcd->dwItemSpec == TBCD_TICS ) { ReleaseDC( pDC ); *pResult = CDRF_SKIPDEFAULT; return; } // drawing the thumb else if ( lpcd->dwItemSpec == TBCD_THUMB ) { CRect rcThumbDraw; if ( rect.Height() > rect.Width() ) DrawHorizontalThumb( pDC, rect ); else DrawVerticalThumb( pDC, rect ); } // drawing the channel, the space // below the thumb else if ( lpcd->dwItemSpec == TBCD_CHANNEL ) { CRect rcThumb; GetThumbRect(rcThumb); DrawChannel( pDC, rect, ( rcThumb.Height() > rcThumb.Width() ) ); } *pResult = CDRF_SKIPDEFAULT; return; } *pResult = CDRF_SKIPDEFAULT; }
CRect CPlayerSeekBar::GetInnerThumbRect() { CRect r = GetThumbRect(); bool fEnabled = m_fEnabled && m_start < m_stop; r.DeflateRect(3, fEnabled ? 5 : 4, 3, fEnabled ? 5 : 4); return(r); }
void CPlayerSeekBar::SetPosInternal(__int64 pos) { if(m_pos == pos) return; CRect before = GetThumbRect(); m_pos = min(max(pos, m_start), m_stop); m_posreal = pos; CRect after = GetThumbRect(); if(before != after) { InvalidateRect(before | after); CMainFrame* pFrame = ((CMainFrame*)GetParentFrame()); if((AfxGetAppSettings().m_fUseWin7TaskBar)&&(pFrame->m_pTaskbarList)) pFrame->m_pTaskbarList->SetProgressValue ( pFrame->m_hWnd, pos, m_stop ); } }
VOID GUIScrollbar::Update() { RECT trt; GetThumbRect( &trt ); Image3DTranslate( &m_Data.img3DThumb, static_cast< FLOAT >( m_Data.ptBackPosition.x + trt.left + m_Data.img3DThumb.vecScale.x * 0.5f ), static_cast< FLOAT >( m_Data.ptBackPosition.y + trt.top + m_Data.img3DThumb.vecScale.y * 0.5f ), 0.0f ); m_bLKeyUp = TRUE; }
void HSliderCtrl::OnLButtonDown(UINT nFlags, CPoint point) { CRect thuRect; GetThumbRect(&thuRect); if (thuRect.PtInRect(point)) { m_byThuState = THUME_DOWN; Invalidate(); } CSliderCtrl::OnLButtonDown(nFlags, point); }
void CPlayerSeekBar::OnLButtonDown(UINT nFlags, CPoint point) { if(m_fEnabled && (GetChannelRect() | GetThumbRect()).PtInRect(point)) { SetCapture(); MoveThumb(point); GetParent()->PostMessage(WM_HSCROLL, MAKEWPARAM((short)m_pos, SB_THUMBPOSITION), (LPARAM)m_hWnd); } CDialogBar::OnLButtonDown(nFlags, point); }
void SetSliderPosition(HWND hwnd, LONG pos, Slider_Info *pInfo) { // Invalidate the old thumb rect InvalidateRect(hwnd, &pInfo->rcThumb, FALSE); pInfo->posThumb = pos; GetThumbRect(hwnd, pInfo); // Invalidate the new thumb rect InvalidateRect(hwnd, &pInfo->rcThumb, FALSE); }
void CPlayerSeekBar::CreateThumb(bool bEnabled, CDC& parentDC) { auto& pThumb = bEnabled ? m_pEnabledThumb : m_pDisabledThumb; pThumb = std::unique_ptr<CDC>(new CDC()); if (pThumb->CreateCompatibleDC(&parentDC)) { COLORREF white = GetSysColor(COLOR_WINDOW), shadow = GetSysColor(COLOR_3DSHADOW), light = GetSysColor(COLOR_3DHILIGHT), bkg = GetSysColor(COLOR_BTNFACE); CRect r(GetThumbRect()); r.MoveToXY(0, 0); CRect ri(GetInnerThumbRect(bEnabled, r)); CBitmap bmp; VERIFY(bmp.CreateCompatibleBitmap(&parentDC, r.Width(), r.Height())); VERIFY(pThumb->SelectObject(bmp)); pThumb->Draw3dRect(&r, light, 0); r.DeflateRect(0, 0, 1, 1); pThumb->Draw3dRect(&r, light, shadow); r.DeflateRect(1, 1, 1, 1); CBrush b(bkg); pThumb->FrameRect(&r, &b); r.DeflateRect(0, 1, 0, 1); pThumb->FrameRect(&r, &b); r.DeflateRect(1, 1, 0, 0); pThumb->Draw3dRect(&r, shadow, bkg); if (bEnabled) { r.DeflateRect(1, 1, 1, 2); CPen whitePen(PS_INSIDEFRAME, 1, white); CPen* old = pThumb->SelectObject(&whitePen); pThumb->MoveTo(r.left, r.top); pThumb->LineTo(r.right, r.top); pThumb->MoveTo(r.left, r.bottom); pThumb->LineTo(r.right, r.bottom); pThumb->SelectObject(old); pThumb->SetPixel(r.CenterPoint().x, r.top, 0); pThumb->SetPixel(r.CenterPoint().x, r.bottom, 0); } } else { ASSERT(FALSE); } }
//***************************************************************************************** void CBCGPSliderCtrl::OnLButtonDown(UINT nFlags, CPoint point) { CRect rectThumb; GetThumbRect (rectThumb); m_bIsThumPressed = rectThumb.PtInRect (point); if (m_bIsThumPressed) { RedrawWindow (); } CSliderCtrl::OnLButtonDown(nFlags, point); }
void CPlayerSeekBar::SyncThumbToVideo(REFERENCE_TIME rtPos) { m_rtPos = rtPos; if (m_bHasDuration) { CRect newThumbRect(GetThumbRect()); bool bSetTaskbar = (rtPos <= 0); if (newThumbRect != m_lastThumbRect) { bSetTaskbar = true; InvalidateRect(newThumbRect | m_lastThumbRect); } if (bSetTaskbar && AfxGetAppSettings().fUseWin7TaskBar && m_pMainFrame->m_pTaskbarList) { VERIFY(S_OK == m_pMainFrame->m_pTaskbarList->SetProgressValue(m_pMainFrame->m_hWnd, max(m_rtPos, 1), m_rtStop)); } } }
BOOL CSkinItemSlider::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* lpResult) { LONG x = GETXPARAM(lParam); LONG y = GETYPARAM(lParam); UINT flag = (UINT)wParam; CRect rect(0, 0, 0, 0); GetThumbRect(rect); if (rect.PtInRect(CPoint(x, y)) || ::GetCapture() == m_hWnd) { m_bInThumbOrDrag = TRUE; } else { m_bInThumbOrDrag = FALSE; } return CSkinItem::OnMouseMove(uMsg, wParam, lParam, lpResult); }
void CListHeaderItemUI::DoPaint(HDC hDC, const RECT& rcPaint) { // Paint text (with some indent) RECT rcMessage = m_rcItem; rcMessage.left += 6; rcMessage.bottom -= 1; int nLinks = 0; CBlueRenderEngineUI::DoPaintPrettyText(hDC, m_pManager, rcMessage, m_sText, UICOLOR_HEADER_TEXT, UICOLOR__INVALID, NULL, nLinks, DT_SINGLELINE | DT_VCENTER); // Draw gripper POINT ptTemp = { 0 }; RECT rcThumb = GetThumbRect(m_rcItem); RECT rc1 = { rcThumb.left + 2, rcThumb.top + 4, rcThumb.left + 2, rcThumb.bottom - 1 }; CBlueRenderEngineUI::DoPaintLine(hDC, m_pManager, rc1, UICOLOR_HEADER_SEPARATOR); RECT rc2 = { rcThumb.left + 3, rcThumb.top + 4, rcThumb.left + 3, rcThumb.bottom - 1 }; CBlueRenderEngineUI::DoPaintLine(hDC, m_pManager, rc2, UICOLOR_STANDARD_WHITE); }
void ThumbInfo::OnLButtonDown() { if (bEnableTip && fcOpt.bShowTip) KillTip(); GetCursorPos(&ptOld); RECT rc; GetThumbRect(&rc); nLeft = rc.left; nTop = rc.top; bMouseDown = TRUE; bMouseMoved = FALSE; }
VOID GUIScrollbar::OnDown( INT x, INT y ) { RECT rt; SetRect( &rt, m_Data.ptBackPosition.x, m_Data.ptBackPosition.y, m_Data.ptBackPosition.x + m_Data.rtBack.right, m_Data.ptBackPosition.y + m_Data.rtBack.bottom ); POINT pt; pt.x = x; pt.y = y; if( PtInRect( &rt, pt ) ) { pt.x = pt.x - rt.left; pt.y = pt.y - rt.top; RECT trt; GetThumbRect( &trt ); if( PtInRect( &trt, pt ) & !m_bLKeyDrag ) { switch( m_dStyle ) { case SCL_HROZ: m_Data.iOffset = trt.left - pt.x; break; case SCL_VERT: m_Data.iOffset = trt.top - pt.y; break; } m_bLKeyDrag = TRUE; } else { switch( m_dStyle ) { case SCL_HROZ: PosFromPixel( pt.x - m_Data.iTSize / 2 ); break; case SCL_VERT: PosFromPixel( pt.y - m_Data.iTSize / 2 ); break; } } } }
void CSliderUI::PaintStatusImage(HDC hDC) { RECT rcThumb = GetThumbRect(); if (m_bSpecialThumb == false) { CProgressUI::PaintStatusImage(hDC); }else{ if( m_nMax <= m_nMin ) m_nMax = m_nMin + 1; if( m_nValue > m_nMax ) m_nValue = m_nMax; if( m_nValue < m_nMin ) m_nValue = m_nMin; RECT rc = {0}; if( m_bHorizontal ) { rc.right = (m_nValue - m_nMin) * (m_rcItem.right - m_rcItem.left) / (m_nMax - m_nMin); rc.bottom = m_rcItem.bottom - m_rcItem.top; rc.left -= (rcThumb.right - rcThumb.left)/2; } else { rc.top = (m_rcItem.bottom - m_rcItem.top) * (m_nMax - m_nValue) / (m_nMax - m_nMin); rc.right = m_rcItem.right - m_rcItem.left; rc.bottom = m_rcItem.bottom - m_rcItem.top; rc.bottom -= (rcThumb.bottom - rcThumb.top)/2; m_diFore.rcDestOffset = rc; } DrawImage(hDC, m_diFore); } rcThumb.left -= m_rcItem.left; rcThumb.top -= m_rcItem.top; rcThumb.right -= m_rcItem.left; rcThumb.bottom -= m_rcItem.top; if( (m_uButtonState & UISTATE_CAPTURED) != 0 ) { m_diThumbPushed.rcDestOffset = rcThumb; if( DrawImage(hDC, m_diThumbPushed) ) return; } else if( (m_uButtonState & UISTATE_HOT) != 0 ) { m_diThumbHot.rcDestOffset = rcThumb; if( DrawImage(hDC, m_diThumbHot) ) return; } m_diThumb.rcDestOffset = rcThumb; if( DrawImage(hDC, m_diThumb) ) return; }
void CPlayerSeekBar::CreateThumb(bool bEnabled, CDC& parentDC) { auto& pThumb = bEnabled ? m_pEnabledThumb : m_pDisabledThumb; pThumb = std::unique_ptr<CDC>(new CDC()); if (pThumb->CreateCompatibleDC(&parentDC)) { COLORREF white = GetSysColor(COLOR_WINDOW), shadow = GetSysColor(COLOR_3DSHADOW), light = GetSysColor(COLOR_3DHILIGHT), bkg = GetSysColor(COLOR_BTNFACE); CRect r(GetThumbRect()); r.MoveToXY(0, 0); CRect ri(GetInnerThumbRect(bEnabled, r)); CBitmap bmp; VERIFY(bmp.CreateCompatibleBitmap(&parentDC, r.Width(), r.Height())); VERIFY(pThumb->SelectObject(bmp)); pThumb->Draw3dRect(&r, light, 0); r.DeflateRect(0, 0, 1, 1); pThumb->Draw3dRect(&r, light, shadow); r.DeflateRect(1, 1, 1, 1); if (bEnabled) { pThumb->ExcludeClipRect(ri); ri.InflateRect(0, 1, 0, 1); pThumb->FillSolidRect(ri, white); pThumb->SetPixel(ri.CenterPoint().x, ri.top, 0); pThumb->SetPixel(ri.CenterPoint().x, ri.bottom - 1, 0); } pThumb->ExcludeClipRect(ri); ri.InflateRect(1, 1, 1, 1); pThumb->Draw3dRect(&ri, shadow, bkg); pThumb->ExcludeClipRect(ri); CBrush b(bkg); pThumb->FillRect(&r, &b); } else { ASSERT(FALSE); } }
void CPlayerSeekBar::SyncThumbToVideo(REFERENCE_TIME rtPos) { if (m_rtPos == rtPos) { return; } m_rtPos = rtPos; if (m_bHasDuration) { CRect newThumbRect(GetThumbRect()); if (newThumbRect != m_lastThumbRect) { InvalidateRect(newThumbRect | m_lastThumbRect); auto pFrame = AfxGetMainFrame(); if (pFrame && AfxGetAppSettings().fUseWin7TaskBar && pFrame->m_pTaskbarList) { pFrame->m_pTaskbarList->SetProgressValue(pFrame->m_hWnd, m_rtPos, m_rtStop); } } } }