www.pudn.com > gpsCE080506.rar > VolDlg.cpp


// VolDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "gps.h" 
#include "VolDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CVolDlg dialog 
DWORD volume[8]={ 
	0x00000000, 
	0x22222222, 
	0x44444444, 
	0x66666666, 
	0x88888888, 
	0xaaaaaaaa, 
	0xcccccccc, 
	0xffffffff, 
}; 
 
CVolDlg::CVolDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CVolDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CVolDlg) 
		// NOTE: the ClassWizard will add member initialization here 
 
	//}}AFX_DATA_INIT 
	isActiveVol1=FALSE; 
	isActiveVol2=FALSE; 
	isActiveRe=FALSE; 
} 
 
 
void CVolDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CVolDlg) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CVolDlg, CDialog) 
	//{{AFX_MSG_MAP(CVolDlg) 
	ON_WM_PAINT() 
	ON_WM_LBUTTONDOWN() 
	ON_WM_LBUTTONUP() 
	ON_WM_ERASEBKGND() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CVolDlg message handlers 
 
void CVolDlg::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
	CBitmap	bitmap; 
    BITMAP  bmp; 
	CDC     memDC; 
    CFont font; 
    CRect rect; 
// -----------------背景-------------------------------------- 
	bitmap.LoadBitmap(IDB_BITMAP1);//IDB_NAV 
	bitmap.GetObject (sizeof(BITMAP),&bmp); 
	memDC.CreateCompatibleDC (&dc); 
	memDC.SelectObject (bitmap); 
	dc.BitBlt (0,0,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
	bitmap.DeleteObject(); 
//-------------------------------------------------------------- 
	CString str=TEXT("音量"); 
 
	font.CreatePointFont(180,L"黑体"); 
	dc.SelectObject(&font); 
	dc.SetBkMode(TRANSPARENT); 
	dc.SetTextColor(RGB(255,255,255)); 
	dc.DrawText(str, CRect(140,8,200,40), 0); 
 
 
	bitmap.LoadBitmap(IDB_VOLADJUST); 
	bitmap.GetObject (sizeof(BITMAP),&bmp); 
	memDC.CreateCompatibleDC (&dc); 
	memDC.SelectObject (bitmap); 
	dc.BitBlt (83,105,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
	bitmap.DeleteObject(); 
 
 
 
	if(isActiveVol1==FALSE) 
	{//调小音量 
		bitmap.LoadBitmap(IDB_VOL11); 
		bitmap.GetObject (sizeof(BITMAP),&bmp); 
		memDC.CreateCompatibleDC (&dc); 
		memDC.SelectObject (bitmap); 
		dc.BitBlt (46,94,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
		bitmap.DeleteObject(); 
	} 
	else  
	{ 
        bitmap.LoadBitmap(IDB_VOL12); 
		bitmap.GetObject (sizeof(BITMAP),&bmp); 
		memDC.CreateCompatibleDC (&dc); 
		memDC.SelectObject (bitmap); 
		dc.BitBlt (46,94,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
		bitmap.DeleteObject(); 
	} 
 
	if(isActiveVol2==FALSE) 
	{//调大音量 
		bitmap.LoadBitmap(IDB_VOL21); 
		bitmap.GetObject (sizeof(BITMAP),&bmp); 
		memDC.CreateCompatibleDC (&dc); 
		memDC.SelectObject (bitmap); 
		dc.BitBlt (250,94,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
		bitmap.DeleteObject(); 
	} 
	else 
	{ 
        bitmap.LoadBitmap(IDB_VOL22); 
		bitmap.GetObject (sizeof(BITMAP),&bmp); 
		memDC.CreateCompatibleDC (&dc); 
		memDC.SelectObject (bitmap); 
		dc.BitBlt (250,94,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
		bitmap.DeleteObject(); 
	} 
 
 
	if(isActiveRe==FALSE) 
	{//返回按钮 
		bitmap.LoadBitmap(IDB_RETURN1); 
		bitmap.GetObject (sizeof(BITMAP),&bmp); 
		memDC.CreateCompatibleDC (&dc); 
		memDC.SelectObject (bitmap); 
		dc.BitBlt (136,164,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
		bitmap.DeleteObject(); 
	} 
	else 
	{ 
		bitmap.LoadBitmap(IDB_RETURN2); 
		bitmap.GetObject (sizeof(BITMAP),&bmp); 
		memDC.CreateCompatibleDC (&dc); 
		memDC.SelectObject (bitmap); 
		dc.BitBlt (136,164,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY); 
		bitmap.DeleteObject(); 
	} 
  
 
	rect.left=84;     //start position 
	rect.top=100; 
 
 
	for(int i=0;i<8;i++) 
	{ 
		if(volumeValue>=volume[i] && volumeValue7) 
			volumeCur=7; 
		volumeValue=volume[volumeCur]; 
		waveOutSetVolume(0,volumeValue); 
//		InvalidateRect(CRect(46,94,282,130),FALSE); 
		InvalidateRect(CRect(0,0,282,130),FALSE); 
	} 
	else if(isActiveVol1==TRUE) 
	{//减小音量 
		isActiveVol1=FALSE; 
		volumeCur--; 
		if(volumeCur<0) 
			volumeCur=0; 
		volumeValue=volume[volumeCur]; 
		waveOutSetVolume(0,volumeValue); 
//		InvalidateRect(CRect(46,94,282,130),FALSE); 
		InvalidateRect(CRect(0,0,282,130),FALSE); 
	} 
	else if(isActiveRe==TRUE) 
	{//返回 
		isActiveRe=FALSE; 
		CDialog::OnCancel(); 
		InvalidateRect(CRect(136,164,186,213),FALSE); 
	} 
 
 
	 
	CDialog::OnLButtonUp(nFlags, point); 
} 
 
 
BOOL CVolDlg::OnEraseBkgnd(CDC* pDC)  
{ 
	// TODO: Add your message handler code here and/or call default 
	 
//	return CDialog::OnEraseBkgnd(pDC); 
	return -1; 
} 
 
BOOL CVolDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
 
	waveOutGetVolume(0,&volumeValue); 
 
 
	if(volumeValue==0) 
	{ 
		volumeCur=0; 
	} 
	else if(volumeValue==0xffffffff) 
	{ 
		volumeCur=7; 
	} 
	else 
	{ 
		for(int i=0;i<7;i++) 
		{ 
			if(volumeValue>=volume[i] && volumeValue