www.pudn.com > GPS.2.rar > MP3Dlg.cpp


// MP3Dlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "GPS.h" 
#include "MP3Dlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CMP3Dlg dialog 
 
 
CMP3Dlg::CMP3Dlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CMP3Dlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CMP3Dlg) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
 
void CMP3Dlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CMP3Dlg) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CMP3Dlg, CDialog) 
	//{{AFX_MSG_MAP(CMP3Dlg) 
	ON_WM_LBUTTONDOWN() 
	ON_WM_LBUTTONUP() 
	ON_WM_PAINT() 
	ON_WM_ERASEBKGND() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CMP3Dlg message handlers 
 
BOOL CMP3Dlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	 
		m_Left=0; 
	m_Top=0; 
	m_Width=320; 
	m_Height=240; 
	::SetWindowPos(this->GetSafeHwnd(),HWND_TOP,m_Left, m_Top,  
		m_Width, m_Height,SWP_SHOWWINDOW); 
	 
	CenterWindow(GetDesktopWindow());	// center to the hpc screen 
	// TODO: Add extra initialization here 
	m_BackScreenBitmap.LoadBitmap(IDB_MP3_BKG); 
 
	SetToolRectangle(); 
 
	m_prePick=-1; 
	m_currentPick=0; 
	m_bIsExecute=FALSE ; 
	return true; 
	// return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CMP3Dlg::OnLButtonDown(UINT nFlags, CPoint point)  
{ 
	// TODO: Add your message handler code here and/or call default 
		m_prePick = m_currentPick ; 
 
	for ( int i = 0 ; i < 16 ; i ++ )  
	{		 
		if (  m_rect[i].PtInRect (point)   ) 
		{									 
		 
			{	 
				 
				CDC* pDC = GetDC () ; 
				CDC  memDC ; 
				memDC.CreateCompatibleDC ( pDC ) ; 
				 
				CBitmap bmp ; 
				 
				switch ( m_prePick ) 
				{ 
				case 0: 
					{//白 
						bmp.LoadBitmap ( IDB_MP3_UP_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ;						 
						 
						break ; 
					} 
				case 1: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_DOWN_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 2: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_ADD_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 3: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_SUB_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
				case 4: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_PLAY_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}		 
				case 5: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_STOP_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
				case 6: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_LEFT_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}		 
				case 7: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_RIGHT_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}		 
				case 8: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_ROUND_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
				case 9: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_RANDOM_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
				case 10: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_TIAO1 ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
					case 11: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_TIAO2 ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
					case 12: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_MUTE_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
					case 13: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_CANCEL_W) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
					case 14: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_BIGORSMALL_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
					case 15: 
					{ 
						bmp.LoadBitmap ( IDB_MP3_CLOSE_W ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ; 
						 
						pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),  
							m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					}	 
 
				 
				} 
				 
				CBitmap   bmp1 ; 
				switch ( i ) 
				{ 
				case 0: 
					{			 
						//load the bitmap	 
						//黑 
						bmp1.LoadBitmap ( IDB_MP3_UP_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						 
						break ; 
					} 
				case 1:			 
					{				 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_DOWN_B) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						 
						break ; 
					} 
				case 2: 
					{							 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_ADD_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						 
						break ; 
					} 
				case 3: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_SUB_B) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 4: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_PLAY_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
				//		AfxMessageBox(L"asdf",MB_OK); 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 5: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_STOP_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 6: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_LEFT_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 7: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_RIGHT_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 8: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_ROUND_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 9: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_RANDOM_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 10: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_TIAO1 ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 11: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_TIAO2 ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
					 
				case 12: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_MUTE_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
					 
				case 13: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_CANCEL_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
					 
				case 14: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_BIGORSMALL_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
					 
				case 15: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_MP3_CLOSE_B ) ; 
						 
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
						 
						pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
							m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
						 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
					 
					 
				 
				} 
				 
				memDC.DeleteDC () ; 
				ReleaseDC ( pDC ) ; 
				 
				m_currentPick = i ;				 
			}	 
 
		} 
	} 
} 
 
void CMP3Dlg::OnLButtonUp(UINT nFlags, CPoint point)  
{ 
	// TODO: Add your message handler code here and/or call default 
	 
	CopyBMP(IDB_MP3_UP_W,0); 
	CopyBMP(IDB_MP3_DOWN_W,1); 
	CopyBMP(IDB_MP3_ADD_W,2); 
	CopyBMP(IDB_MP3_SUB_W,3); 
	CopyBMP(IDB_MP3_PLAY_W,4); 
	CopyBMP(IDB_MP3_STOP_W,5); 
	CopyBMP(IDB_MP3_LEFT_W,6); 
	CopyBMP(IDB_MP3_RIGHT_W,7); 
	CopyBMP(IDB_MP3_ROUND_W,8); 
	CopyBMP(IDB_MP3_RANDOM_W,9); 
	CopyBMP(IDB_MP3_MUTE_B,12); 
	CopyBMP(IDB_MP3_CANCEL_W,13); 
	CopyBMP(IDB_MP3_BIGORSMALL_W,14); 
	CopyBMP(IDB_MP3_CLOSE_W,15); 
	 
	 
 
	m_bIsExecute = FALSE ; 
	for ( int i = 0 ; i < 61 ; i ++ )  
	{		 
		if (  m_rect[i].PtInRect (point)   ) 
		{ 
			if ( m_currentPick == i) 
			{ 
				m_bIsExecute =TRUE ; 
				switch (i) 
				{ 
				case 0:	 
			//			bright_dlg.DoModal(); 
						 
						break ; 
				case 1: 
			//			language_dlg.DoModal(); 
						break ; 
				case 2: 
						 
						break ; 
				case 3:		 
			//			volume_dlg.DoModal(); 
 
						break ; 
				case 4:			 
					 
						break ; 
				case 5:		 
					 
						break ; 
				case 6:					 
						break ; 
				case 7:			 
			//			time_dlg.DoModal(); 
						break ; 
				case 8:		 
					 
						break ; 
				case 9:					 
						break ; 
				case 12:					 
						 
					//	 
						break ; 
				case 13:			 
						CDialog::OnCancel(); 
						break ; 
				case 14:			 
					 
						break ; 
				case 15:			 
					 
						break ; 
				default: 
						break ; 
				} 
			} 
		} 
		 
	} 
} 
 
void CMP3Dlg::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
	 
	// TODO: Add your message handler code here 
	DrawInterface(dc); 
	// Do not call CDialog::OnPaint() for painting messages 
} 
 
BOOL CMP3Dlg::OnEraseBkgnd(CDC* pDC)  
{ 
	// TODO: Add your message handler code here and/or call default 
	 
 
		BITMAP bmpInfo; 
	m_BackScreenBitmap.GetBitmap(&bmpInfo); 
	 
	// Create an in-memory DC compatible with the 
	// display DC we're using to paint 
	CDC dcMemory; 
	dcMemory.CreateCompatibleDC(pDC); 
	 
	 
	// Select the bitmap into the in-memory DC 
	CBitmap* pOldBitmap = dcMemory.SelectObject(&m_BackScreenBitmap); 
	 
	// Find a centerpoint for the bitmap in the client area 
	CRect rect; 
	GetClientRect(&rect); 
	 
	// Copy the bits from the in-memory DC into the on- 
	// screen DC to actually do the painting. Use the centerpoint 
	// we computed for the target offset. 
	pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,  
		0, 0, SRCCOPY); 
	 
	dcMemory.SelectObject(pOldBitmap); 
	return TRUE; 
} 
 
void CMP3Dlg::CopyBMP(int m_map, int i) 
{ 
 
CDC* pDC = GetDC () ; 
	CDC  memDC ; 
	memDC.CreateCompatibleDC ( pDC ) ; 
	CBitmap bmp,bmp1 ; 
	CBitmap* pOldBitmap ; 
	bmp1.LoadBitmap ( m_map) ; 
	pOldBitmap = memDC.SelectObject ( &bmp1 ) ; 
	pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),  
	m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ; 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	memDC.DeleteDC () ; 
	ReleaseDC ( pDC ) ;	 
} 
 
void CMP3Dlg::DrawInterface(CDC &dc) 
{ 
	CDC  memDC ; 
	memDC.CreateCompatibleDC ( &dc ) ; 
	 
	CBitmap*  pBitmap ;		//load all bitmap 
	CBitmap*  pOldBitmap ;	//save old bitmap temp 
 
	//显示进度条 
	pBitmap = new CBitmap ; 
	pBitmap ->LoadBitmap ( IDB_MP3_TIAO1 ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	dc.BitBlt ( m_rect[10].TopLeft().x, m_rect[10].TopLeft().y, 155, 11, &memDC, 0, 0, SRCCOPY ) ; 
	memDC.SelectObject ( pOldBitmap ) ; 
	delete pBitmap ; 
	 
	//显示音量条 
	pBitmap = new CBitmap ; 
	pBitmap ->LoadBitmap ( IDB_MP3_TIAO2 ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	dc.BitBlt ( m_rect[11].TopLeft().x, m_rect[11].TopLeft().y, 85, 12, &memDC, 0, 0, SRCCOPY ) ; 
	memDC.SelectObject ( pOldBitmap ) ; 
	delete pBitmap ; 
	 
	//.显示LIST............................................................ 
	pBitmap = new CBitmap ; 
	pBitmap ->LoadBitmap ( IDB_MP3_LIST ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	dc.BitBlt ( m_rect[16].TopLeft().x, m_rect[16].TopLeft().y, 53, 158, &memDC, 0, 0, SRCCOPY ) ; 
	memDC.SelectObject ( pOldBitmap ) ; 
	delete pBitmap ; 
	//分配bitmap对象内存 
 
 
	//显示窗口 
	pBitmap = new CBitmap ; 
	pBitmap ->LoadBitmap ( IDB_MP3_WINDOW ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	dc.BitBlt ( m_rect[17].TopLeft().x, m_rect[17].TopLeft().y, 200, 200, &memDC, 0, 0, SRCCOPY ) ; 
	memDC.SelectObject ( pOldBitmap ) ; 
	delete pBitmap ; 
	///////////////////////////////////////////////// 
 
	 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if (m_NavRefresh ||  m_currentPick == 0) 
	{ 
	//黑 
		pBitmap ->LoadBitmap ( IDB_MP3_UP_B ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[0].TopLeft().x, m_rect[0].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		//白 
		pBitmap ->LoadBitmap ( IDB_MP3_UP_W) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[0].TopLeft().x, m_rect[0].TopLeft().y, 158, 158, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	//释放bitmap对象内存 
	delete pBitmap ; 
	////////////////////////////////////////////// 
	//............................................................. 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 1 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_DOWN_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[1].TopLeft().x, m_rect[1].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_DOWN_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[1].TopLeft().x, m_rect[1].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	//释放bitmap对象内存 
	delete pBitmap ; 
	 
	//............................................................... 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 2 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_ADD_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[2].TopLeft().x, m_rect[2].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_ADD_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[2].TopLeft().x, m_rect[2].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	//释放bitmap对象内存 
	delete pBitmap ; 
	 
	//................................................................ 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 3 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_SUB_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[3].TopLeft().x, m_rect[3].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_SUB_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[3].TopLeft().x, m_rect[3].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	//释放bitmap对象内存 
	delete pBitmap ; 
	//................................................................ 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 4 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_PLAY_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[4].TopLeft().x, m_rect[4].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_PLAY_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[4].TopLeft().x, m_rect[4].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	//释放bitmap对象内存 
	delete pBitmap ; 
	 
	//................................................................ 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 5 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_STOP_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[5].TopLeft().x, m_rect[5].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_STOP_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[5].TopLeft().x, m_rect[5].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
	 
	//////////////////////// 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 6 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_LEFT_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[6].TopLeft().x, m_rect[6].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_LEFT_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[6].TopLeft().x, m_rect[6].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
 
	///////////////////// 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 7 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_RIGHT_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[7].TopLeft().x, m_rect[7].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_RIGHT_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[7].TopLeft().x, m_rect[7].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
	////////////////////// 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 8 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_ROUND_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[8].TopLeft().x, m_rect[8].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_ROUND_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[8].TopLeft().x, m_rect[8].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
 
	////////////////////// 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 9 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_RANDOM_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[9].TopLeft().x, m_rect[9].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_RANDOM_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[9].TopLeft().x, m_rect[9].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
	//分配bitmap对象内存 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 12 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_MUTE_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[12].TopLeft().x, m_rect[12].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_MUTE_B ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[12].TopLeft().x, m_rect[12].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
	//分配bitmap对象内存 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 13 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_CANCEL_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[13].TopLeft().x, m_rect[13].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_CANCEL_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[13].TopLeft().x, m_rect[13].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
	//分配bitmap对象内存 
		//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 14 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_BIGORSMALL_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[14].TopLeft().x, m_rect[14].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_BIGORSMALL_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[14].TopLeft().x, m_rect[14].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
		//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 15 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_MP3_CLOSE_B ) ; 
	pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
	 
	//将图片COPY到指定的像素位置 
	dc.BitBlt ( m_rect[15].TopLeft().x, m_rect[15].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	else 
	{		 
		pBitmap ->LoadBitmap ( IDB_MP3_CLOSE_W ) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[15].TopLeft().x, m_rect[15].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	//释放bitmap对象内存 
	delete pBitmap ; 
 
 
	//////////////// 
	memDC.DeleteDC ()  ; 
 
} 
 
void CMP3Dlg::SetToolRectangle() 
{ 
	m_rect [0].SetRect(28,21,75,38); 
	m_rect [1].SetRect(28,122,75,139); 
	m_rect [2].SetRect(28,138,75,154); 
	m_rect [3].SetRect(28,153,75,171); 
	m_rect [4].SetRect(28,201,60,233); 
	m_rect [5].SetRect(73,200,107,234); 
	m_rect [6].SetRect(120,200,153,234); 
	m_rect [7].SetRect(167,200,200,234); 
	m_rect [8].SetRect(213,200,247,234); 
	m_rect [9].SetRect(260,200,293,234); 
	m_rect [10].SetRect(19,182,174,193); 
	m_rect [11].SetRect(199,182,284,194); 
	m_rect [12].SetRect(175,178,196,200);//list 
	m_rect [13].SetRect(286,177,308,201); 
	m_rect [14].SetRect(256,21,272,35); 
	m_rect [15].SetRect(277,20,290,34); 
	m_rect [16].SetRect(25,18,78,173); 
	m_rect [17].SetRect(101,18,295,173); 
}