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


// BrightDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "GPS.h" 
#include "BrightDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
extern HANDLE hBak; 
#define IOCTL_GET_STA			0x803 
#define IOCTL_SET_STA           0x804 
 
#define MAX_TIMEOUT	2147483 
 
const TCHAR szregRootKey[]=TEXT("ControlPanel\\Backlight"); 
const TCHAR szregBatteryTimeout[]=TEXT("BatteryTimeout"); 
const TCHAR szregACTimeout[]=TEXT("ACTimeout"); 
 
// CBrightDlg dialog 
 
 
CBrightDlg::CBrightDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CBrightDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CBrightDlg) 
	//}}AFX_DATA_INIT 
	 out = 0; 
	 m_strAcTime [0] = "15秒"; 
	 m_strAcTime [1]= "30秒"; 
	 m_strAcTime [2]= "1分"; 
	 m_strAcTime [3] = "2分"; 
	 m_strAcTime [4]= "5分"; 
	 m_strAcTime [5]= "10分"; 
	 m_strAcTime [6]= "30分"; 
	 m_strAcTime [7]= "60分"; 
	 m_strAcTime [8]= "从不"; 
 
	 m_strBatTime [0] = "15秒"; 
	 m_strBatTime [1]= "30秒"; 
	 m_strBatTime [2]= "1分"; 
	 m_strBatTime [3] = "2分"; 
	 m_strBatTime [4]= "5分"; 
	 m_strBatTime [5]= "10分"; 
	 m_strBatTime [6]= "30分"; 
	 m_strBatTime [7]= "60分"; 
	 m_strBatTime [8]= "从不"; 
/* 
	 m_strBatTime15s = "15秒"; 
	 m_strBatTime30s = "30秒"; 
	 m_strBatTime1m = "1分"; 
	 m_strBatTime2m = "2分"; 
	 m_strBatTime5m = "5分"; 
	 m_strBatTime10m = "10分"; 
	 m_strBatTime30m = "30分"; 
	 m_strBatTime60m = "15秒"; 
	 m_strBatTimeNever = "从不"; 
*/ 
//	 m_strAcTime = {"15秒","30秒","1分","2分","5分","10分","30分","60分","从不"}; 
} 
 
 
void CBrightDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CBrightDlg) 
	DDX_Control(pDX, IDC_BRIGHT9, m_staBright9); 
	DDX_Control(pDX, IDC_BRIGHT8, m_staBright8); 
	DDX_Control(pDX, IDC_BRIGHT6, m_staBright6); 
	DDX_Control(pDX, IDC_BRIGHT7, m_staBright7); 
	DDX_Control(pDX, IDC_BRIGHT5, m_staBright5); 
	DDX_Control(pDX, IDC_BRIGHT4, m_staBright4); 
	DDX_Control(pDX, IDC_BRIGHT3, m_staBright3); 
	DDX_Control(pDX, IDC_BRIGHT2, m_staBright2); 
	DDX_Control(pDX, IDC_BRIGHT1, m_staBright1); 
	DDX_Control(pDX, IDC_BRIGHT0, m_staBright0); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CBrightDlg, CDialog) 
	//{{AFX_MSG_MAP(CBrightDlg) 
	ON_WM_KEYDOWN() 
	ON_WM_LBUTTONDOWN() 
	ON_WM_LBUTTONUP() 
	ON_WM_PAINT() 
	ON_WM_ERASEBKGND() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CBrightDlg message handlers 
 
BOOL CBrightDlg::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_BRIGHT_BKG); 
 
	SetToolRectangle(); 
 
	m_prePick=-1; 
	m_currentPick=0; 
	m_bIsExecute=FALSE ; 
 
	////////// 亮度 
	DeviceIoControl(hBak,IOCTL_GET_STA,NULL,0,&out,1,NULL,NULL); 
	if(out<=9) 
		ShowBright(9-out); 
	else 
		ShowBright(9); 
 
	 
    //点击屏墓音 
	 
	//////////关屏,待机 
	HKEY hKey; 
	LONG lResult; 
	DWORD dwType; 
	DWORD dwBat,dwAC; 
	DWORD dwLen; 
	 
	lResult = RegOpenKeyEx(HKEY_CURRENT_USER, szregRootKey, 0, KEY_ALL_ACCESS, &hKey); 
	if(ERROR_SUCCESS == lResult) 
	{ 
		dwType = REG_DWORD; 
		dwLen  = sizeof(DWORD); 
 
		lResult = RegQueryValueEx(hKey, szregBatteryTimeout, NULL, &dwType,(LPBYTE)&dwBat, &dwLen); 
		if(ERROR_SUCCESS == lResult) 
		{ 
		} 
		lResult = RegQueryValueEx(hKey, szregACTimeout, NULL, &dwType, (LPBYTE)&dwAC,&dwLen); 
		{ 
		} 
	} 
	if(dwBat==15) m_strBat=m_strBatTime[0]; 
	else if(dwBat==30) m_strBat=m_strBatTime[1]; 
	else if(dwBat==60) m_strBat=m_strBatTime[2]; 
	else if(dwBat==120) m_strBat=m_strBatTime[3]; 
	else if(dwBat==300) m_strBat=m_strBatTime[4]; 
	else if(dwBat==600) m_strBat=m_strBatTime[5]; 
	else if(dwBat==1800) m_strBat=m_strBatTime[6]; 
	else if(dwBat==3600) m_strBat=m_strBatTime[7]; 
	else if(dwBat==MAX_TIMEOUT) m_strBat=m_strBatTime[8]; 
	else m_strBat=_T(""); 
 
	if(dwAC==15) m_strAc=m_strAcTime[0]; 
	else if(dwAC==30) m_strAc=m_strAcTime[1]; 
	else if(dwAC==60) m_strAc=m_strAcTime[2]; 
	else if(dwAC==120) m_strAc=m_strAcTime[3]; 
	else if(dwAC==300) m_strAc=m_strAcTime[4]; 
	else if(dwAC==600) m_strAc=m_strAcTime[5]; 
	else if(dwAC==1800) m_strAc=m_strAcTime[6]; 
	else if(dwAC==3600) m_strAc=m_strAcTime[7]; 
	else if(dwAC==MAX_TIMEOUT) m_strAc=m_strAcTime[8]; 
	else m_strAc=_T(""); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CBrightDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)  
{ 
	// TODO: Add your message handler code here and/or call default 
		 
	m_prePick=m_currentPick ; 
			 
	if ( nChar == VK_UP || nChar == VK_LEFT ) 
		{ 
			switch (m_prePick) 
					{ 
					case 0: 
						//GPS黑别的白 
						CopyBMP(IDB_BRIGHT_SUB_B,0); 
						CopyBMP(IDB_BRIGHT_ADD_W,1); 
						CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
						CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
						CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
						CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
						CopyBMP(IDB_BRIGHT_OK_W,6); 
	 
						m_currentPick = 0 ; 
						break ; 
					case 1: 
						//mp3黑别的白 
					CopyBMP(IDB_BRIGHT_SUB_B,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
	 
						 
						m_currentPick = 0 ; 
						break ; 
					case 2: 
						//mp4黑别的白 
				CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_B,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
		m_currentPick = 1 ; 
						break ; 
					case 3: 
						//图黑 
					CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_B,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
		m_currentPick = 2 ; 
						break; 
					case 4: 
						//工具黑 
			CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_B,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
			m_currentPick = 3 ; 
						break ; 
					case 5: 
						//设置黑 
		CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_B,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
					m_currentPick = 4 ; 
						break; 
							case 6: 
						//设置黑 
		CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_B,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
					m_currentPick = 5 ; 
						break; 
					} 
				} 
				 
			if ( nChar == VK_DOWN  || nChar == VK_RIGHT) 
				{ 
					switch (m_prePick)  
					{ 
					case 0: 
						//MP3黑别的白 
		CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_B,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
			m_currentPick = 1 ; 
						break ; 
					case 1: 
						//mp4黑别的白 
		CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_B,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
					 
						m_currentPick = 2 ; 
						break ; 
					case 2: 
						//picture黑别的白 
	CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_B,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
	 
						m_currentPick = 3 ; 
						break ; 
					case 3: 
	CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_B,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
						m_currentPick = 4 ; 
						break; 
					case 4: 
						//set黑 
	CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_B,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
						m_currentPick = 5 ; 
						break ; 
					case 5: 
						//设置黑 
	CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_B,6); 
						m_currentPick = 6 ; 
						break; 
	case 6: 
						//设置黑 
	CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_B,6); 
						m_currentPick = 6 ; 
						break; 
				 
					} 
				} 
				 
	 
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags); 
} 
 
void CBrightDlg::OnLButtonDown(UINT nFlags, CPoint point)  
{ 
	m_prePick = m_currentPick ; 
 
	for ( int i = 0 ; i < 8 ; 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_BRIGHT_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 1: 
					{ 
						bmp.LoadBitmap ( IDB_BRIGHT_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 2: 
					{ 
						bmp.LoadBitmap ( IDB_BRIGHT_1_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 3: 
					{ 
						bmp.LoadBitmap ( IDB_BRIGHT_1_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 4: 
					{ 
						bmp.LoadBitmap ( IDB_BRIGHT_2_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 5: 
					{ 
						bmp.LoadBitmap ( IDB_BRIGHT_2_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 6: 
					{ 
						bmp.LoadBitmap ( IDB_BRIGHT_OK_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_BRIGHT_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 1:			 
					{				 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_BRIGHT_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 2: 
					{							 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_BRIGHT_1_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 3: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_BRIGHT_1_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 4: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_BRIGHT_2_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 ) ; 
				//		AfxMessageBox(L"asdf",MB_OK); 
						memDC.SelectObject ( pOldBitmap ) ; 
						break ; 
					} 
				case 5: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_BRIGHT_2_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 6: 
					{ 
						//load the bitmap 
						 
						bmp1.LoadBitmap ( IDB_BRIGHT_OK_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 CBrightDlg::OnLButtonUp(UINT nFlags, CPoint point)  
{ 
 
	CBrightDlg dlg; 
	// TODO: Add your message handler code here and/or call default 
	CopyBMP(IDB_BRIGHT_SUB_W,0); 
	CopyBMP(IDB_BRIGHT_ADD_W,1); 
	CopyBMP(IDB_BRIGHT_1_LEFT_W,2); 
	CopyBMP(IDB_BRIGHT_1_RIGHT_W,3); 
	CopyBMP(IDB_BRIGHT_2_LEFT_W,4); 
	CopyBMP(IDB_BRIGHT_2_RIGHT_W,5); 
	CopyBMP(IDB_BRIGHT_OK_W,6); 
	 
	 
 
	m_bIsExecute = FALSE ; 
	for ( int i = 0 ; i < 8 ; i ++ )  
	{		 
		if (  m_rect[i].PtInRect (point)   ) 
		{ 
			if ( m_currentPick == i) 
			{ 
				m_bIsExecute =TRUE ; 
				switch (i) 
				{ 
				case 0:	 
				//		dlg.DoModal(); 
						OnBtnSub(); 
						break ; 
				case 1: 
						OnBtnAdd(); 
						break ; 
				case 2: 
						OnBtn_1_Left(); 
						 
						 
						break ; 
				case 3:		 
						OnBtn_1_Right(); 
						 
						break ; 
				case 4:	 
						OnBtn_2_Left(); 
							 
					 
						break ; 
				case 5:		 
						OnBtn_2_Right(); 
					 
						break ; 
				case 6:					 
						OnBtnOK(); 
						break ; 
			 
				default: 
						break ; 
				} 
			} 
		} 
		 
	} 
} 
 
void CBrightDlg::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 
 
	dc.SetBkMode(TRANSPARENT); 
	dc.SetTextColor(RGB(255,0,10)); 
	dc.ExtTextOut(147,115,ETO_CLIPPED,CRect(147,115,200,133),m_strBat,NULL); 
	dc.ExtTextOut(147,174,ETO_CLIPPED,CRect(147,174,200,195),m_strAc,NULL); 
 
} 
 
BOOL CBrightDlg::OnEraseBkgnd(CDC* pDC)  
{ 
	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 CBrightDlg::SetToolRectangle() 
{ 
	m_rect [0].SetRect(71,48,103,81); 
	m_rect [1].SetRect(217,48,249,80); 
	m_rect [2].SetRect(71,107,104,140); 
	m_rect [3].SetRect(217,107,250,139); 
	m_rect [4].SetRect(71,167,103,200); 
	m_rect [5].SetRect(217,167,250,199); 
	m_rect [6].SetRect(276,198,310,232); 
} 
 
void CBrightDlg::DrawInterface(CDC &dc) 
{ 
	CDC  memDC ; 
	memDC.CreateCompatibleDC ( &dc ) ; 
	 
	CBitmap*  pBitmap ;		//load all bitmap 
	CBitmap*  pOldBitmap ;	//save old bitmap temp 
	 
	//............................................................. 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if (m_NavRefresh ||  m_currentPick == 0) 
	{ 
	//黑 
		pBitmap ->LoadBitmap ( IDB_BRIGHT_SUB_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_BRIGHT_SUB_W) ; 
		pOldBitmap = memDC.SelectObject ( pBitmap ) ; 
		 
		//将图片COPY到指定的像素位置 
		dc.BitBlt ( m_rect[0].TopLeft().x, m_rect[0].TopLeft().y, 111, 111, &memDC, 0, 0, SRCCOPY ) ; 
	} 
	 
	 
	memDC.SelectObject ( pOldBitmap ) ; 
	 
	//释放bitmap对象内存 
	delete pBitmap ; 
	 
	//............................................................. 
	//分配bitmap对象内存 
	pBitmap = new CBitmap ; 
	 
	if ( m_currentPick == 1 ) 
	{ 
	pBitmap ->LoadBitmap ( IDB_BRIGHT_ADD_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_BRIGHT_ADD_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_BRIGHT_1_LEFT_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_BRIGHT_1_LEFT_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_BRIGHT_1_RIGHT_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_BRIGHT_1_RIGHT_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_BRIGHT_2_LEFT_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_BRIGHT_2_LEFT_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_BRIGHT_2_RIGHT_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_BRIGHT_2_RIGHT_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_BRIGHT_OK_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_BRIGHT_OK_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 ; 
 
 
 
	////////////////////// 
	memDC.DeleteDC ()  ; 
		 
} 
 
void CBrightDlg::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 CBrightDlg::OnBtnAdd() 
{ 
if(out>0) 
		out--; 
	else 
		out=0; 
	ShowBright(9-out); 
	DeviceIoControl(hBak,IOCTL_SET_STA,&out,1,NULL,0,NULL,NULL);  
} 
 
void CBrightDlg::OnBtnSub() 
{ 
if(out<9) 
		out++; 
	else 
		out=9; 
	ShowBright(9-out); 
	DeviceIoControl(hBak,IOCTL_SET_STA,&out,1,NULL,0,NULL,NULL);  
	 
} 
 
void CBrightDlg::OnBtnOK() 
{ 
	HKEY hKey; 
	DWORD dwType; 
	DWORD dwBatTime,dwACTime; 
	DWORD dwLen; 
	HANDLE Handle; 
 
	if (m_strBat == m_strBatTime[0] ) 
	{ 
		dwBatTime=15; 
	} 
	else if(m_strBat == m_strBatTime[1]) 
	{ 
		dwBatTime=30; 
	} 
	else if(m_strBat == m_strBatTime[2]) 
	{ 
		dwBatTime=60; 
	} 
	else if(m_strBat == m_strBatTime[3]) 
	{ 
		dwBatTime=120; 
	} 
	else if(m_strBat == m_strBatTime[4]) 
	{ 
		dwBatTime=300; 
	} 
	else if(m_strBat == m_strBatTime[5]) 
	{ 
		dwBatTime=600; 
	} 
	else if(m_strBat == m_strBatTime[6]) 
	{ 
		dwBatTime=1800; 
	} 
	else if(m_strBat == m_strBatTime[7]) 
	{ 
		dwBatTime=3600; 
	} 
	else if(m_strBat == m_strBatTime[8]) 
	{ 
		dwBatTime=MAX_TIMEOUT; 
	} 
 
	if(m_strAc == m_strAcTime[0]) 
	{ 
		dwACTime=15; 
	} 
	else if(m_strAc == m_strAcTime[1]) 
	{ 
		dwACTime=30; 
	} 
	else if(m_strAc == m_strAcTime[2]) 
	{ 
		dwACTime=60; 
	} 
	else if(m_strAc == m_strAcTime[3]) 
	{ 
		dwACTime=120; 
	} 
	else if(m_strAc == m_strAcTime[4]) 
	{ 
		dwACTime=300; 
	} 
	else if(m_strAc == m_strAcTime[5]) 
	{ 
		dwACTime=600; 
	} 
	else if(m_strAc == m_strAcTime[6]) 
	{ 
		dwACTime=1800; 
	} 
	else if(m_strAc == m_strAcTime[7]) 
	{ 
		dwACTime=3600; 
	} 
	else if(m_strAc == m_strAcTime[8]) 
	{ 
		dwACTime=MAX_TIMEOUT; 
	} 
 
	 
 
	long lResult = RegOpenKeyEx(HKEY_CURRENT_USER, szregRootKey, 0, KEY_ALL_ACCESS, &hKey); 
	if(ERROR_SUCCESS == lResult) 
	{ 
		dwType = REG_DWORD; 
		dwLen  = sizeof(DWORD); 
 
		lResult = RegSetValueEx(hKey,szregBatteryTimeout, 0, dwType, (LPBYTE)&dwBatTime, 
				dwLen); 
		lResult = RegSetValueEx(hKey,szregACTimeout,0,dwType,(LPBYTE)&dwACTime, 
			dwLen); 
	} 
	Handle = CreateEvent(NULL, FALSE, FALSE, TEXT("BackLightChangeEvent")); 
	if (Handle)  
	{ 
		SetEvent(Handle); 
		CloseHandle(Handle); 
	} 
	CDialog::OnOK(); 
} 
 
void CBrightDlg::ShowBright(UCHAR bright) 
{ 
	m_staBright1.ShowWindow(SW_HIDE); 
	m_staBright2.ShowWindow(SW_HIDE); 
	m_staBright3.ShowWindow(SW_HIDE); 
	m_staBright4.ShowWindow(SW_HIDE); 
	m_staBright5.ShowWindow(SW_HIDE); 
	m_staBright6.ShowWindow(SW_HIDE); 
	m_staBright7.ShowWindow(SW_HIDE); 
	m_staBright8.ShowWindow(SW_HIDE); 
	m_staBright9.ShowWindow(SW_HIDE); 
	m_staBright0.ShowWindow(SW_HIDE); 
	 
	switch(bright) 
	{ 
	case 0: 
		m_staBright0.ShowWindow(SW_SHOW); 
		break; 
	case 1: 
		m_staBright1.ShowWindow(SW_SHOW); 
		break; 
	case 2: 
		m_staBright2.ShowWindow(SW_SHOW); 
		break; 
	case 3: 
		m_staBright3.ShowWindow(SW_SHOW); 
		break; 
	case 4: 
		m_staBright4.ShowWindow(SW_SHOW); 
		break; 
	case 5: 
		m_staBright5.ShowWindow(SW_SHOW); 
		break; 
	case 6: 
		m_staBright6.ShowWindow(SW_SHOW); 
		break; 
	case 7: 
		m_staBright7.ShowWindow(SW_SHOW); 
		break; 
	case 8: 
		m_staBright8.ShowWindow(SW_SHOW); 
		break; 
	case 9: 
		m_staBright9.ShowWindow(SW_SHOW); 
		break; 
	default: 
		break; 
	} 
} 
 
void CBrightDlg::OnBtn_1_Left() 
{ 
 
	for (int i = 0; i < 9;i++) 
	{ 
		if (m_strBat == m_strBatTime[i]) 
		{ 
			if (i == 0 ) 
				m_strBat = m_strBatTime[i]; 
			else 
				m_strBat = m_strBatTime[i - 1]; 
			InvalidateRect(CRect(147,114,200,132)); 
			return; 
		} 
	} 
	 
} 
void CBrightDlg::OnBtn_1_Right() 
{ 
	for (int i = 0; i < 9;i++) 
	{ 
		if (m_strBat == m_strBatTime[i]) 
		{ 
			if (i == 8) 
				m_strBat = m_strBatTime[i]; 
			else  
				m_strBat = m_strBatTime[i + 1];	 
			InvalidateRect(CRect(147,114,200,132)); 
			return; 
		} 
	} 
 
} 
void CBrightDlg::OnBtn_2_Left() 
{ 
	for (int i = 0; i < 9;i++) 
	{ 
		if (m_strAc == m_strAcTime[i]) 
		{ 
			if (i == 0) 
				m_strAc = m_strAcTime[i]; 
			else 
				m_strAc = m_strAcTime[i - 1]; 
			InvalidateRect(CRect(147,172,200,193));	 
			return; 
				 
		} 
	} 
	 
						 
} 
 
 
 
void CBrightDlg::OnBtn_2_Right() 
{ 
	for (int i = 0; i < 9;i++) 
	{ 
		if (m_strAc == m_strAcTime[i]) 
		{ 
			if ( i == 8) 
				m_strAc = m_strAcTime[i]; 
			else 
				m_strAc = m_strAcTime[i + 1]; 
			InvalidateRect(CRect(147,172,200,193)); 
			return; 
		} 
	} 
 
} 
 
void CBrightDlg::OnOK()  
{ 
//	PROCESS_INFORMATION info; 
	switch (m_currentPick) 
	{ 
		case 0:	 
				//		dlg.DoModal(); 
						OnBtnSub(); 
						break ; 
				case 1: 
						OnBtnAdd(); 
						break ; 
				case 2: 
						OnBtn_1_Left(); 
						 
						 
						break ; 
				case 3:		 
						OnBtn_1_Right(); 
						 
						break ; 
				case 4:	 
						OnBtn_2_Left(); 
							 
					 
						break ; 
				case 5:		 
						OnBtn_2_Right(); 
					 
						break ; 
				case 6:					 
						OnBtnOK(); 
						break ; 
			 
		default: 
			break ; 
	} 
		 
}