www.pudn.com > GPS.2.rar > GPSDlg.cpp
// GPSDlg.cpp : implementation file
//
#include "stdafx.h"
#include "GPS.h"
#include "GPSDlg.h"
#include "SetDlg.h"
#include "ToolDlg.h"
#include "ErrorDlg.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
// CGPSDlg dialog
BOOL GpsCodeStart()
{
HANDLE hFile;
unsigned char rece;
unsigned char buf[100];
unsigned char baud[10];
int iBaudRate=0;
DWORD num;
int i=0;
hFile=CreateFile(TEXT("\\Storage Card\\GpsCmd.txt"),GENERIC_READ,0,NULL,
OPEN_EXISTING,0,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
//CloseHandle(hWndFile);
//MessageBox(TEXT("Can't open file!"));
return FALSE;
}
while(1)//read baudrate from file
{
if(ReadFile(hFile, &rece, 1, &num, NULL))
{
if(rece==' ')
break;
else
{
baud[i]=rece;
i++;
if(i==9)//too long for baudrate
{
return FALSE;
}
}
}
else
return FALSE;
}
baud[i]=0;
int len1=i;//lenth fo baud
i=0;
while(1)//read command for codestart form file
{
if(ReadFile(hFile, &rece, 1, &num, NULL))
{
if(num==0)//reaches the end of the file
break;
if((rece==' ')||(rece=='\r')||(rece=='\n')||(rece==0))
break;
else
{
buf[i]=rece;
i++;
if(i==99)//too long for command
{
return FALSE;
}
}
}
else
return FALSE;
}
buf[i]=13;//
i++;
buf[i]=10;//
i++;
buf[i]=0;
int len2=i;
CloseHandle(hFile);
for(i=0;iLoadIcon(IDR_MAINFRAME);
}
void CGPSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGPSDlg)
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(CGPSDlg, CDialog)
//{{AFX_MSG_MAP(CGPSDlg)
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
ON_MESSAGE(WM_SUSPEND,OnSuspend)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGPSDlg message handlers
BOOL CGPSDlg::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();
return TRUE; // return TRUE unless you set the focus to a control
}
void CGPSDlg::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 CGPSDlg::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 CGPSDlg::OnCancel()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
void CGPSDlg::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 CGPSDlg::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);
}
void CGPSDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
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 ) ;
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_TOOL_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_SET_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_GPS_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_MP3_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_MP4_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_PICTURE_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_TOOL_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 5:
{
//load the bitmap
bmp1.LoadBitmap ( IDB_SET_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 CGPSDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
//GPS
char sName[100]={0};
TCHAR wName[100]={0};
PROCESS_INFORMATION info;
HANDLE Handle=NULL;
HANDLE hNavFile;
char buff[100]={0};
DWORD LineNum;
DWORD num;
int dwSize;
//将所有图片变白
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_bIsExecute = FALSE ;
for ( int i = 0 ; i < 6 ; i ++ )
{
if ( m_rect[i].PtInRect (point) )
{
if ( m_currentPick == i)
{
m_bIsExecute =TRUE ;
switch (i)
{
case 0:
hNavFile=CreateFile(TEXT("\\Storage Card\\Nav.txt"),GENERIC_READ,0,NULL,
OPEN_EXISTING,0,NULL);
if(hNavFile==INVALID_HANDLE_VALUE)
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
}
if(!ReadFile(hNavFile, buff, 2, &num, NULL))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break ;
}
if(num!=2)
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
}
LineNum=(buff[0]-48)*10+(buff[1]-48);
if(!ReadFile(hNavFile,buff,LineNum,&num,NULL))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
//return;
}
if(num!=LineNum)
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
}
CloseHandle(hNavFile);
memcpy(sName,buff,LineNum);
dwSize = MultiByteToWideChar (CP_ACP, 0, sName, -1, NULL, 0);
MultiByteToWideChar (CP_ACP, 0, sName, -1, wName, dwSize);
if(!(CreateProcess(wName,NULL,NULL, NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL,&info)))
{
error_dlg.m_strError = " 不能运行请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 1://打开mp3
if(!(CreateProcess(TEXT("\\Storage Card\\vmaxplayer\\vmaxplayer.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL, &info)))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 2://打开mp4
if(!(CreateProcess(TEXT("\\Storage Card\\vmaxplayer\\vmaxplayer.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL, &info)))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 3: //打开图片浏览
if(!(CreateProcess(TEXT("\\Storage Card\\VMaxSee\\VmaxSee.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL, &info)))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 4:
tool_dlg.DoModal();
break ;
case 5:
set_dlg.DoModal();
break ;
default:
break ;
}
}
}
}
}
void CGPSDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
m_prePick=m_currentPick ;
if ( nChar == VK_UP|| nChar == VK_LEFT )
{
switch (m_prePick)
{
case 0:
//GPS黑别的白
CopyBMP(IDB_GPS_B,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 0 ;
break ;
case 1:
//mp3黑别的白
CopyBMP(IDB_GPS_B,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 0 ;
break ;
case 2:
//mp4黑别的白
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_B,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 1 ;
break ;
case 3:
//图黑
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_B,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 2 ;
break;
case 4:
//工具黑
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_B,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 3 ;
break ;
case 5:
//设置黑
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_B,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 4 ;
break;
}
}
if ( nChar == VK_DOWN || nChar == VK_RIGHT)
{
switch (m_prePick)
{
case 0:
//MP3黑别的白
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_B,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 1 ;
break ;
case 1:
//mp4黑别的白
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_B,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 2 ;
break ;
case 2:
//picture黑别的白
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_B,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 3 ;
break ;
case 3:
//tool黑
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_B,4);
CopyBMP(IDB_SET_W,5);
m_currentPick = 4 ;
break;
case 4:
//set黑
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_B,5);
m_currentPick = 5 ;
break ;
case 5:
//设置黑
CopyBMP(IDB_GPS_W,0);
CopyBMP(IDB_MP3_W,1);
CopyBMP(IDB_MP4_W,2);
CopyBMP(IDB_PICTURE_W,3);
CopyBMP(IDB_TOOL_W,4);
CopyBMP(IDB_SET_B,5);
m_currentPick = 5 ;
break;
}
}
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
LRESULT CGPSDlg::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 CGPSDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::PreTranslateMessage(pMsg);
}
void CGPSDlg::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 CGPSDlg::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;
}
}
void CGPSDlg::OnTimer(UINT nIDEvent)
{
UCHAR out;
BOOL bACIn;
if(nIDEvent==3)
{
DeviceIoControl(hBak,IOCTL_GET_ACSTA,NULL,0,&out,1,NULL,NULL);
if(out==1)
{
//m_staAC.ShowWindow(SW_SHOW);
bACIn=TRUE;
}
else
{
//m_staAC.ShowWindow(SW_HIDE);
bACIn=FALSE;
}
DeviceIoControl(hBat,IOCTL_GET_SCALE,NULL,0,&out,1,NULL,NULL);
//show charg up state
if((bACIn)&&(out!=5))
{
ShowBattery(chargeStau0);
if(chargeStau0<4)
chargeStau0++;
else
{
chargeStau0=0;
}
}
else
{
ShowBattery(out);
}
}
CDialog::OnTimer(nIDEvent);
}
void CGPSDlg::OnOK()
{
// int nResponse;
//GPS
char sName[100]={0};
TCHAR wName[100]={0};
PROCESS_INFORMATION info;
HANDLE Handle=NULL;
HANDLE hNavFile;
char buff[100]={0};
DWORD LineNum;
DWORD num;
int dwSize;
//**************************************************************//
//if ( nChar == VK_RETURN )
{
switch (m_currentPick)
{
case 0:
hNavFile=CreateFile(TEXT("\\Storage Card\\Nav.txt"),GENERIC_READ,0,NULL,
OPEN_EXISTING,0,NULL);
if(hNavFile==INVALID_HANDLE_VALUE)
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
}
if(!ReadFile(hNavFile, buff, 2, &num, NULL))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break ;
}
if(num!=2)
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
}
LineNum=(buff[0]-48)*10+(buff[1]-48);
if(!ReadFile(hNavFile,buff,LineNum,&num,NULL))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
//return;
}
if(num!=LineNum)
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
CloseHandle(hNavFile);
m_NavRefresh = TRUE ;
InvalidateRect(&m_rect[0]);
break;
}
CloseHandle(hNavFile);
memcpy(sName,buff,LineNum);
dwSize = MultiByteToWideChar (CP_ACP, 0, sName, -1, NULL, 0);
MultiByteToWideChar (CP_ACP, 0, sName, -1, wName, dwSize);
if(!(CreateProcess(wName,NULL,NULL, NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL,&info)))
{
error_dlg.m_strError = " 不能运行,请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 1://打开mp3
if(!(CreateProcess(TEXT("\\Storage Card\\vmaxplayer\\vmaxplayer.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL, &info)))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 2://打开mp4
if(!(CreateProcess(TEXT("\\Storage Card\\vmaxplayer\\vmaxplayer.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL, &info)))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 3: //打开图片浏览
if(!(CreateProcess(TEXT("\\Storage Card\\VMaxSee\\VmaxSee.exe"),NULL,NULL,NULL,NULL,CREATE_NEW_CONSOLE,
NULL,NULL,NULL, &info)))
{
error_dlg.m_strError = " 请检查SD卡! ";
error_dlg.DoModal();
}
break ;
case 4:
tool_dlg.DoModal();
break ;
case 5:
set_dlg.DoModal();
break ;
default:
break ;
}
}
}
HRESULT CGPSDlg::OnSuspend()
{
HWND hWnd;
HANDLE hWndFile;
char buff[100]={0};
DWORD LineNum;
DWORD num;
int dwSize;
char flag;
hWnd=::FindWindow(TEXT("TCPMP_Win"),NULL);
if(hWnd!=NULL)
{
::SendMessage(hWnd,WM_CLOSE,0,0);
}
hWndFile=CreateFile(TEXT("\\Storage Card\\NavWnd"),GENERIC_READ,0,NULL,
OPEN_EXISTING,0,NULL);
if(hWndFile==INVALID_HANDLE_VALUE)
{
CloseHandle(hWndFile);
//MessageBox(TEXT("Can't open file!"));
return 0;
}
if(!ReadFile(hWndFile, buff, 2, &num, NULL))
{
//MessageBox(L"Can't Read file");
CloseHandle(hWndFile);
return 0;
}
if(num!=2)
{
//MessageBox(L"File Error!");
CloseHandle(hWndFile);
return 0;
}
LineNum=(buff[0]-48)*10+(buff[1]-48);
if(!ReadFile(hWndFile,buff,LineNum,&num,NULL))
{
//MessageBox(TEXT("File Error!"));
//RETAILMSG(1,(TEXT("aaaaaaaaaaaaaaaaaa")));
CloseHandle(hWndFile);
return 0;
}
if(num!=LineNum)
{
//MessageBox(TEXT("File Error!"));
//RETAILMSG(1,(TEXT("LineNum==%d\r\n"),LineNum));
//RETAILMSG(1,(TEXT("NUM==%d\r\n"),num));
CloseHandle(hWndFile);
return 0;
//return 0;
}
if(!ReadFile(hWndFile,&flag,1,&num,NULL))
{
//RETAILMSG(1,(TEXT("bbbbbbbbbbbbbbbb")));
//MessageBox(TEXT("File Error!"));
CloseHandle(hWndFile);
return 0;
}
if(num!=1)
{
//RETAILMSG(1,(TEXT("cccccccccccccccccccc")));
//MessageBox(TEXT("File Error!"));
CloseHandle(hWndFile);
return 0;
}
flag-=48;
//RETAILMSG(1,(TEXT("flag is%d\r\n"),flag));
CloseHandle(hWndFile);
char sName[100]={0};
TCHAR wName[100]={0};
memcpy(sName,buff,LineNum);
dwSize = MultiByteToWideChar (CP_ACP, 0, sName, -1, NULL, 0);
MultiByteToWideChar (CP_ACP, 0, sName, -1, wName, dwSize);
if(flag==1)
{
hWnd=::FindWindow(wName,NULL);
//RETAILMSG(1,(TEXT("1111wName is%d\r\n"),wName));
if(hWnd!=NULL)
{
::SendMessage(hWnd,WM_CLOSE,0,0);
}
}
else if(flag==2)
{
//RETAILMSG(1,(TEXT("2222wName is%d\r\n"),wName));
hWnd=::FindWindow(NULL,wName);
if(hWnd!=NULL)
{
::SendMessage(hWnd,WM_CLOSE,0,0);
}
}
else
return 0;
return 0;
}