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

📄 pic1dlg.cpp

📁 EVC编写的拨号控制程序。采用EVC++编写。可以控制蓝牙模块。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// pic1Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "pic1.h"
#include "pic1Dlg.h"
#include "ErrorDlg.h"

//#include <afxwin.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

SYSTEMTIME time0;
/////////////////////////////////////////////////////////////////////////////
HANDLE hBat;
HANDLE hBak;
//CSetDlg set_dlg;
//CToolDlg tool_dlg;

CErrorDlg error_dlg;
UCHAR chargeStau0=0;
#define IOCTL_GET_ACSTA			0x807
#define IOCTL_GET_SCALE			0x809

// CPic1Dlg dialog

CPic1Dlg::CPic1Dlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPic1Dlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPic1Dlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CPic1Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPic1Dlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	DDX_Control(pDX, IDC_BT4, m_BT4);
	DDX_Control(pDX, IDC_BT3, m_BT3);
	DDX_Control(pDX, IDC_BT2, m_BT2);
	DDX_Control(pDX, IDC_BT1, m_BT1);
	DDX_Control(pDX, IDC_BT0, m_BT0);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPic1Dlg, CDialog)
	//{{AFX_MSG_MAP(CPic1Dlg)
//	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_WM_ERASEBKGND()
	ON_WM_PAINT()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_KEYDOWN()
	ON_BN_CLICKED(IDC_BUTTON1, OnCancel)
	ON_WM_TIMER()

	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPic1Dlg message handlers

BOOL CPic1Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	//
   	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_BKG);

	SetToolRectangle();

	
	m_prePick=-1;

	m_currentPick =0 ;

	m_bIsExecute=FALSE ;
	m_NavRefresh = FALSE ;
	

	PROCESS_INFORMATION info;

	if(!(CreateProcess(TEXT("\\Windows\\usbcnect.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,
		NULL,NULL,NULL, &info)))
	{
		//MessageBox(TEXT("Can't run !"),TEXT("Error"));
	}

	//open battery file to get battery power电池
	hBat = CreateFile(TEXT("BAT1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
	if(INVALID_HANDLE_VALUE==hBat)
	{
		//MessageBox(TEXT("Can't open BAT1!"));
	}
	UCHAR out;
	
	DeviceIoControl(hBat,IOCTL_GET_SCALE,NULL,0,&out,1,NULL,NULL);
	ShowBattery(out);

	//open backlite file to get AC state背光
	hBak=CreateFile(TEXT("BAK1:"),GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
	if(INVALID_HANDLE_VALUE==hBak)
	{
		//MessageBox(_T("CAN NOT OPEN BANK1!"));
		//return FALSE;
	}

	Sleep(1000);
	SetTimer(3,1000,NULL);
	//开始播放音。
	PlaySound(TEXT("startup.wav"),NULL,SND_FILENAME|SND_ASYNC);
//	GpsCodeStart();

    // TODO: Add extra initialization here
	SetFocus();

	/**   测试电池,模拟时可以出现,但在PDA上程序开始显示一下就消失了****/
//	ShowBattery(1);


	return TRUE;  // return TRUE  unless you set the focus to a control
}


void CPic1Dlg::SetToolRectangle()
{
	m_rect [0].SetRect(37,44,101,125);
	m_rect [1].SetRect(134,43,195,125);
	m_rect [2].SetRect(228,44,287,126);
	m_rect [3].SetRect(29,131,101,216);
	m_rect [4].SetRect(125,130,210,218);
	m_rect [5].SetRect(225,127,289,214);

	logo.SetRect(12,12,151,41);

}



BOOL CPic1Dlg::OnEraseBkgnd(CDC* pDC) 
{
 	 BITMAP bmpInfo;
      m_BackScreenBitmap.GetBitmap(&bmpInfo);

      
      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);

     
      pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 
         0, 0, SRCCOPY);

      dcMemory.SelectObject(pOldBitmap);

	  return true;	
}


void CPic1Dlg::OnCancel() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}





void CPic1Dlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	DrawInterface ( dc ) ;

	//设透明字体
	GetLocalTime(&time0);

	dc.SetBkMode(TRANSPARENT);
	dc.SetTextColor(RGB(255,255,255));

	CString str;
	str.Format(_T(" %02d:%02d"),time0.wHour,time0.wMinute);
	
	dc.ExtTextOut(220,16,ETO_CLIPPED,CRect(220,16,262,29),str,NULL);


}


void CPic1Dlg::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_GPS_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_GPS_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_MP3_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_MP3_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_MP4_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_MP4_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_PICTURE_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_PICTURE_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_TOOL_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_TOOL_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_SET_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_SET_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 ;
	

	///////////
	//设LOGO
	pBitmap = new CBitmap ;
	pBitmap ->LoadBitmap ( IDB_LOGO ) ;
	pOldBitmap = memDC.SelectObject ( pBitmap ) ;
		
	//将图片COPY到指定的像素位置
	dc.BitBlt ( logo.TopLeft().x, logo.TopLeft().y, 131, 33, &memDC, 0, 0, SRCCOPY ) ;
	
	memDC.SelectObject ( pOldBitmap ) ;
	delete pBitmap;

	//////////////////////
	memDC.DeleteDC ()  ;

	//dc.ExtTextOut(120,30,ETO_CLIPPED,CRect(19,43,63,93),L"asf",NULL);

	/**   测试电池,让它一直出现着,权宜之计   ****/
	ShowBattery(5);
	
}



void CPic1Dlg::ShowBattery(char num)
{
	switch(num)
	{
	case 5:
		m_BT4.ShowWindow(SW_SHOW);
		m_BT3.ShowWindow(SW_HIDE);
		m_BT2.ShowWindow(SW_HIDE);
		m_BT1.ShowWindow(SW_HIDE);
		m_BT0.ShowWindow(SW_HIDE);
		break;
	case 4:
	
		m_BT4.ShowWindow(SW_HIDE);
		m_BT3.ShowWindow(SW_SHOW);
		m_BT2.ShowWindow(SW_HIDE);
		m_BT1.ShowWindow(SW_HIDE);
		m_BT0.ShowWindow(SW_HIDE);
		break;
	case 3:
	
		m_BT4.ShowWindow(SW_HIDE);
		m_BT3.ShowWindow(SW_HIDE);
		m_BT2.ShowWindow(SW_SHOW);
		m_BT1.ShowWindow(SW_HIDE);
		m_BT0.ShowWindow(SW_HIDE);
		break;
	case 2:
	
		m_BT4.ShowWindow(SW_HIDE);
		m_BT3.ShowWindow(SW_HIDE);
		m_BT2.ShowWindow(SW_HIDE);
		m_BT1.ShowWindow(SW_SHOW);
		m_BT0.ShowWindow(SW_HIDE);
		break;
	case 1:
	
		m_BT4.ShowWindow(SW_HIDE);
		m_BT3.ShowWindow(SW_HIDE);
		m_BT2.ShowWindow(SW_HIDE);
		m_BT1.ShowWindow(SW_HIDE);
		m_BT0.ShowWindow(SW_SHOW);
		break;
	default:
	
		m_BT4.ShowWindow(SW_HIDE);
		m_BT3.ShowWindow(SW_HIDE);
		m_BT2.ShowWindow(SW_HIDE);
		m_BT1.ShowWindow(SW_HIDE);
		m_BT0.ShowWindow(SW_HIDE);
		break;
	}
}




LRESULT CPic1Dlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DefWindowProc(message, wParam, lParam);
}

BOOL CPic1Dlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::PreTranslateMessage(pMsg);
}





void CPic1Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: Add your specialized code here and/or call the base class
		m_prePick = m_currentPick ;

	for ( int i = 0 ; i < 6 ; 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_GPS_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_MP3_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_MP4_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_PICTURE_W ) ;
						
						CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ;
						

⌨️ 快捷键说明

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