📄 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] && 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 + -