www.pudn.com > source.rar > ProgressStatusBar.cpp


// ProgressStatusBar.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "flashnow.h" 
#include "ProgressStatusBar.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CProgressStatusBar 
 
CProgressStatusBar::CProgressStatusBar() 
{ 
} 
 
CProgressStatusBar::~CProgressStatusBar() 
{ 
} 
 
 
BEGIN_MESSAGE_MAP(CProgressStatusBar, CStatusBar) 
//{{AFX_MSG_MAP(CProgressStatusBar) 
// NOTE - the ClassWizard will add and remove mapping macros here. 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CProgressStatusBar message handlers 
 
void CProgressStatusBar::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{ 
	UINT ID,Style; 
	int Width; 
	GetPaneInfo(lpDrawItemStruct->itemID,ID,Style,Width); 
	if(ID==ID_INDICATOR_LOADED) 
	{ 
		CDC dc; 
		dc.Attach(lpDrawItemStruct->hDC); 
		CRect Client(lpDrawItemStruct->rcItem); 
		int Progress; 
		sscanf((TCHAR *)lpDrawItemStruct->itemData,"%d",&Progress); 
		CString Text=(TCHAR *)lpDrawItemStruct->itemData; 
		Text+="%"; 
		dc.SetTextAlign(TA_CENTER); 
		dc.FillSolidRect(Client.left,Client.top,(Client.Width())*Progress/100,Client.Height(),RGB(160,160,160)); 
		 
		if(Progress) 
		{ 
			dc.SetBkMode(TRANSPARENT); 
			dc.TextOut(Client.left+Client.Width()/2,Client.top,Text); 
		} 
		dc.Detach(); 
		return; 
	} 
	CStatusBar::DrawItem(lpDrawItemStruct); 
}