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

📄 brightdlg.cpp

📁 EVC开发的手持导航的用户操作界面
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 ;
	}
		
}

⌨️ 快捷键说明

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