gps/GPSResources/tcpmpVerOld/MusicPlayer/BmpProgress.cpp

119 lines
2.2 KiB
C++
Executable File

// BmpProgress.cpp : 实现文件
//
#include "stdafx.h"
#include "MusicPlayer.h"
#include "BmpProgress.h"
// CBmpProgress
IMPLEMENT_DYNAMIC(CBmpProgress, CProgressCtrl)
CBmpProgress::CBmpProgress()
{
m_NormalID = 0;
m_DownID = 0;
m_Min = 0;
m_Max = 0;
}
CBmpProgress::~CBmpProgress()
{
m_BackDC.DeleteDC();
m_FrontDC.DeleteDC();
}
BEGIN_MESSAGE_MAP(CBmpProgress, CProgressCtrl)
ON_WM_PAINT()
ON_WM_ERASEBKGND()
// ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
// CBmpProgress 消息处理程序
void CBmpProgress::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CProgressCtrl::OnPaint()
if (m_NormalID && m_DownID)
{
dc.BitBlt(0,0,m_Pos,m_bmpSize.cy,&m_FrontDC,0,0,SRCCOPY);
dc.BitBlt(m_Pos,0,m_bmpSize.cx - m_Pos + 1,m_bmpSize.cy,&m_BackDC,m_Pos,0,SRCCOPY);
}
}
BOOL CBmpProgress::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return FALSE;
//return CProgressCtrl::OnEraseBkgnd(pDC);
}
void CBmpProgress::LoadBitmap(int iNormal, int iDown)
{
m_NormalID = iNormal;
m_DownID = iDown;
CBitmap bmpBackground;
BITMAP bmpInfo;
bmpBackground.LoadBitmap(m_NormalID);
bmpBackground.GetBitmap(&bmpInfo);
m_BackDC.CreateCompatibleDC(NULL);
m_BackDC.SelectObject(&bmpBackground);
m_bmpSize.cx = bmpInfo.bmWidth;
m_bmpSize.cy = bmpInfo.bmHeight;
bmpBackground.DeleteObject();
bmpBackground.LoadBitmap(m_DownID);
m_FrontDC.CreateCompatibleDC(NULL);
m_FrontDC.SelectObject(&bmpBackground);
bmpBackground.DeleteObject();
}
void CBmpProgress::SetPos(int nPos)
{
if (m_Max - m_Min > 0)
{
m_Pos = nPos * m_bmpSize.cx/(m_Max - m_Min);
Invalidate();
}
else
{
m_Max = m_Min = 0;
}
Invalidate();
}
void CBmpProgress::SetRange(int nMin, int nMax)
{
m_Max = nMax;
m_Min = nMin;
}
//void CBmpProgress::OnLButtonDown(UINT nFlags, CPoint point)
//{
// // TODO: 在此添加消息处理程序代码和/或调用默认值
// CRect rc;
// GetClientRect(&rc);
//
// int iPos = (point.x * (m_Max - m_Min)) / (rc.right - rc.left);
//
// SetPos(iPos);
//
// CProgressCtrl::OnLButtonDown(nFlags, point);
//}