【VC开源代码栏目提醒】:以下是网学会员为您推荐的VC开源代码-DrawSlider1.cpp,希望本篇文章对您学习有所帮助。
// DrawSlider1.cpp : implementation file
//
#include "stdafx.h"
#include "DrawSlider.h"
#include "DrawSlider1.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDrawSlider
CDrawSlider::CDrawSlider()
:m_bBtnDown(FALSE)
{
}
CDrawSlider::~CDrawSlider()
{
}
BEGIN_MESSAGE_MAP(CDrawSlider, CSliderCtrl)
//{{AFX_MSG_MAP(CDrawSlider)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDrawSlider message handlers
void CDrawSlider::OnLButtonDown(UINT nFlags, CPoint point)
{
SetCapture();
m_bBtnDown = TRUE;
CSliderCtrl::OnLButtonDown(nFlags, point);
}
void CDrawSlider::OnLButtonUp(UINT nFlags, CPoint point)
{
ReleaseCapture();
m_bBtnDown = FALSE;
CSliderCtrl::OnLButtonUp(nFlags, point);
}
void CDrawSlider::OnPaint()
{
CPaintDC dc(this);
int nPos = GetPos();
SetPos(nPos);
CRect ThumbRC;
GetThumbRect(ThumbRC); //获取滑块区域
//获取滑块的宽度和高度
CBitmap bmp;
bmp.LoadBitmap(IDB_THUMB);
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
//获取位图高度和宽度
int bmpWidth = bmpInfo.bmWidth;
int bmpHeight = bmpInfo.bmHeight;
CRect ClientRC,ChanelRC;
GetClientRect(ClientRC); //获取客户区域
GetChannelRect(ChanelRC); //获取通道区域
//绘制背景
CBitmap bmpBK;
BITMAP BKInfo;
bmpBK.LoadBitmap(IDB_SLIDERBK);
bmpBK.GetBitmap(&BKInfo);
int nBKWidth = BKInfo.bmWidth;
int nBKHeight = BKInfo.bmHeight;
CDC memDC;
memDC.CreateCompatibleDC(&dc);
memDC.SelectObject(&bmpBK);
int nRightMargin = ClientRC.Width()-ChanelRC.left-ChanelRC.Width();
ClientRC.right = ChanelRC.left +ChanelRC.Width()+nRightMargin;
ClientRC.left = ChanelRC.left;
CMemDC bkMemDC(&dc,ClientRC);
//绘制滑块的背景
bkMemDC.StretchBlt(ChanelRC.left,0,ChanelRC.Width()+ChanelRC.left,ClientRC.Height(),
&memDC,0,0,nBKWidth,nBKHeight,SRCCOPY);
bmpBK.DeleteObject();
memDC.DeleteDC();
memDC.CreateCompatibleDC(&dc);
memDC.SelectObject(&bmp);
//绘制滑块
bkMemDC.StretchBlt(ThumbRC.left,ThumbRC.top, ThumbRC.Width(),ClientRC.Height(),
&memDC,0,0,bmpWidth,bmpHeight,SRCCOPY);
bmp.DeleteObject();
memDC.DeleteDC();
}
上一篇:
DrawSlider.cpp
下一篇:
投简历到国外的公司需考虑哪些东西?