⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 voldlg.cpp

📁 CE导航界面。 CE导航界面。
💻 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] && volumeValue<volume[i+1])
		{
			volumeCur=i;
		}
	}
	rect.left+=21*volumeCur;
	rect.top=100;
	rect.right=rect.left+10;
	rect.bottom=rect.top+15;
	CBrush brush1(RGB(250,174,106));	//Choice adapted one color 
//	dc.FillRect(&rect,&brush1);
	dc.SelectObject(&brush1);
	dc.Rectangle(&rect);

//	str.Format(_T("%x"),volumeValue); 
//	dc.DrawText(str,CRect(0,0,100,30),0);
	   // Do not call CDialog::OnPaint() for painting messages

}


void CVolDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{

	if(PtInRect(CRect(46,94,73,121),point))
	{//减小音量
		if(isActiveVol1==FALSE)
		{
			isActiveVol1=TRUE;
			InvalidateRect(CRect(46,94,73,121),FALSE);
		}
	}
	else if(PtInRect(CRect(250,94,277,121),point))
	{//增大音量
		if(isActiveVol2==FALSE)
		{
			isActiveVol2=TRUE;
			InvalidateRect(CRect(250,94,277,121),FALSE);
		}
	}
	else if(PtInRect(CRect(136,164,186,213),point))
	{//返回
		if(isActiveRe==FALSE)
		{
			isActiveRe=TRUE;
			InvalidateRect(CRect(136,164,192,220),FALSE);
		}
	}


	CDialog::OnLButtonDown(nFlags, point);
}

void CVolDlg::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	int cur;
	RECT rect;
	rect.left=84;
	rect.right=84+10;

	cur=(volumeValue+0x1FFFFFFE)/0x1FFFFFFF;

	if(isActiveVol2==TRUE)
	{//增大音量
		isActiveVol2=FALSE;
		volumeCur++;
		if(volumeCur>7)
			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<volume[i+1])
			{
				volumeCur=i;
			}
		}
	}

	volumeValue=volume[volumeCur];


	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -