Пример #1
0
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);
}
Пример #2
0
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();
}
Пример #3
0
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);
	}
}
Пример #4
0
    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;
    }
Пример #5
0
	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;
	}
Пример #6
0
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();
}
Пример #7
0
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;
}
Пример #8
0
//*****************************************************************************************
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);	
	}
}
Пример #9
0
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;
    }
}
Пример #10
0
	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);
		}
	}
Пример #11
0
	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;
		}
	}
Пример #12
0
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);
}
Пример #13
0
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;
	}
}
Пример #14
0
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;
}
Пример #15
0
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);
}
Пример #16
0
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 );
	}
}
Пример #17
0
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;
}
Пример #18
0
void HSliderCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
	CRect thuRect;
	GetThumbRect(&thuRect);
	if (thuRect.PtInRect(point))
	{
		m_byThuState = THUME_DOWN;
		Invalidate();
	}
	CSliderCtrl::OnLButtonDown(nFlags, point);
}
Пример #19
0
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);
}
Пример #20
0
    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);
    }
Пример #21
0
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);
    }
}
Пример #22
0
//*****************************************************************************************
void CBCGPSliderCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CRect rectThumb;
	GetThumbRect (rectThumb);

	m_bIsThumPressed = rectThumb.PtInRect (point);
	
	if (m_bIsThumPressed)
	{
		RedrawWindow ();
	}
	
	CSliderCtrl::OnLButtonDown(nFlags, point);
}
Пример #23
0
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));
        }
    }
}
Пример #24
0
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);
}
Пример #25
0
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);
}
Пример #26
0
void ThumbInfo::OnLButtonDown()
{
	if (bEnableTip && fcOpt.bShowTip)
		KillTip();

	GetCursorPos(&ptOld);

	RECT rc;
	GetThumbRect(&rc);

	nLeft = rc.left;
	nTop = rc.top;

	bMouseDown = TRUE;
	bMouseMoved = FALSE;
}
Пример #27
0
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;
			}
		}
	}
}
Пример #28
0
	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;

	}
Пример #29
0
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);
    }
}
Пример #30
0
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);
            }
        }
    }
}