📄 gpsdlg.cpp
字号:
// gpsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "gps.h"
#include "gpsDlg.h"
#include "SetDlg.h"
#include "PlayDlg.h"
#include "PathDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
typedef BOOL (WINAPI *_TouchCalibrate)();
/////////////////////////////////////////////////////////////////////////////
// CGpsDlg dialog
//HWND hWnd=NULL;
CGpsDlg::CGpsDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGpsDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CGpsDlg)
// 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);
isActiveNav=FALSE;
isActiveMP3=FALSE;
isActiveSet=FALSE;
isNavShell=FALSE;
m_pathValue="";
time=0;
ZeroMemory (&execInf,sizeof(execInf));
// hWnd=HWND(*pParent);
}
void CGpsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGpsDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGpsDlg, CDialog)
//{{AFX_MSG_MAP(CGpsDlg)
ON_WM_PAINT()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
ON_WM_ERASEBKGND()
ON_WM_TIMER()
//}}AFX_MSG_MAP
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
CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
SetTimer(1,1000,NULL);
return TRUE; // return TRUE unless you set the focus to a control
}
BOOL CGpsDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
/* CDC memDC;
CBitmap bitmap;
BITMAP bmp;
// bitmap.LoadBitmap(IDB_MAIN);
bitmap.LoadBitmap(IDB_MAIN);
bitmap.GetObject (sizeof(BITMAP),&bmp);
memDC.CreateCompatibleDC (pDC);
memDC.SelectObject (bitmap);
pDC->BitBlt (0,0,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);
bitmap.DeleteObject();
return TRUE;
*/
// return CDialog::OnEraseBkgnd(pDC);
return -1;
}
void CGpsDlg::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 mainStr=TEXT("主界面");
CString str1=TEXT("导航");//TEXT("GPS导航");
CString str2=TEXT("播放器");//TEXT("MP3");
CString str3=TEXT("设置");//TEXT("设置");
font.CreatePointFont(180,L"黑体");
dc.SelectObject(&font);
// dc.TextOut(130,40,&str);
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255,255,255));
dc.DrawText(mainStr, CRect(128,8,200,40), 0);
font.CreatePointFont(120,L"宋体");
dc.SelectObject(&font);
dc.SetTextColor(RGB(0,0,0));
dc.DrawText(str1, CRect(55,160,100,180), 0);
dc.DrawText(str2, CRect(140,160,190,180), 0);
dc.DrawText(str3, CRect(235,160,280,180), 0);
font.DeleteObject();
/* if(isActiveNav==TRUE)
{
bitmap.LoadBitmap(IDB_NAV);
bitmap.GetObject (sizeof(BITMAP),&bmp);
memDC.CreateCompatibleDC (&dc);
memDC.SelectObject (bitmap);
dc.BitBlt (42,86,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);
bitmap.DeleteObject();
}
else
{
*/ bitmap.LoadBitmap(IDB_NAV);
bitmap.GetObject (sizeof(BITMAP),&bmp);
memDC.CreateCompatibleDC (&dc);
memDC.SelectObject (bitmap);
dc.BitBlt (42,86,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);
bitmap.DeleteObject();
// }
/* if(isActiveMP3==TRUE)
{
bitmap.LoadBitmap(IDB_MP3);
bitmap.GetObject (sizeof(BITMAP),&bmp);
memDC.CreateCompatibleDC (&dc);
memDC.SelectObject (bitmap);
dc.BitBlt (132,86,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);
bitmap.DeleteObject();
}
else
{
*/ bitmap.LoadBitmap(IDB_MP3);
bitmap.GetObject (sizeof(BITMAP),&bmp);
memDC.CreateCompatibleDC (&dc);
memDC.SelectObject (bitmap);
dc.BitBlt (132,86,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);
bitmap.DeleteObject();
// }
/* if(isActiveSet==TRUE)
{
bitmap.LoadBitmap(IDB_SET);
bitmap.GetObject (sizeof(BITMAP),&bmp);
memDC.CreateCompatibleDC (&dc);
memDC.SelectObject (bitmap);
dc.BitBlt (222,86,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);
bitmap.DeleteObject();
}
else
{
*/ bitmap.LoadBitmap(IDB_SET);
bitmap.GetObject (sizeof(BITMAP),&bmp);
memDC.CreateCompatibleDC (&dc);
memDC.SelectObject (bitmap);
dc.BitBlt (222,86,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);
bitmap.DeleteObject();
// }
// dc.DrawText(str, CRect(0,0,320,30), 0);
// Do not call CDialog::OnPaint() for painting messages
}
void CGpsDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnMouseMove(nFlags, point);
}
void CGpsDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(isActiveNav==TRUE && isNavShell==FALSE)
{//程序没有执行时
isActiveNav=FALSE;
if(time>=1)
{
CFile file;
TCHAR *pBuf=NULL;
int dwLen;
if (file.Open(L"\\Storage Card\\config.ini", CFile::typeBinary|CFile::modeRead))
{
dwLen=file.GetLength();
pBuf = new TCHAR[dwLen];
file.Seek(0,CFile::begin);
// file.SeekToBegin();
file.Read(pBuf,dwLen);
pBuf[dwLen]='\0';
}
file.Close();
m_pathValue.Format(TEXT("%s"),pBuf);
int dot=m_pathValue.Find(',');
m_pathValue=m_pathValue.Left(dot);//取得字符‘,’前面的字符串
CString str=m_pathValue.Right(4);
delete pBuf;
if(str==".exe")
{//如果是.exe文件
DWORD lp;
GetExitCodeProcess(execInf.hProcess,&lp);
if(lp!=STILL_ACTIVE)
{
execInf.cbSize = sizeof(execInf);
execInf.fMask = SEE_MASK_NOCLOSEPROCESS;
execInf.lpFile = m_pathValue;
execInf.lpVerb = TEXT("open");
if(ShellExecuteEx(&execInf)==0)
{//程序执行标志
isNavShell=TRUE;
}
}
}
}
// CDialog::OnCancel();
}
else if(isActiveMP3==TRUE)
{
isActiveMP3=FALSE;
CPlayDlg dlg;
dlg.DoModal();
// CDialog::OnCancel();
}
else if(isActiveSet==TRUE)
{
isActiveSet=FALSE;
CSetDlg dlg;
// CPathDlg dlg;
dlg.DoModal();
}
CDialog::OnLButtonUp(nFlags, point);
}
//roman_zh
void CGpsDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if(PtInRect(CRect(42,86,107,151),point))
{//导航
isActiveNav=TRUE;
}
else if(PtInRect(CRect(132,86,218,151),point))
{//MP3
isActiveMP3=TRUE;
}
else if(PtInRect(CRect(222,86,287,151),point))
{//设置
isActiveSet=TRUE;
}
CDialog::OnLButtonDown(nFlags, point);
}
BOOL CGpsDlg::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call the base class
if( !CDialog::PreCreateWindow(cs) )
return FALSE;
cs.cx = 320;
cs.cy = 240;
cs.style &= ~WS_MAXIMIZEBOX;//禁止最大化
cs.style &= ~WS_THICKFRAME;//禁止调整大小
return TRUE;
// return CDialog::PreCreateWindow(cs);
}
void CGpsDlg::OnTimer(UINT nIDEvent)
{
time++;
if(time>=1)
{
time=1;
CFile file;
TCHAR *pBuf=NULL;
int dwLen;
if (file.Open(L"\\Storage Card\\config.ini", CFile::typeBinary|CFile::modeRead))
{
dwLen=file.GetLength();
pBuf = new TCHAR[dwLen];
file.Seek(0,CFile::begin);
// file.SeekToBegin();
file.Read(pBuf,dwLen);
pBuf[dwLen]='\0';
}
file.Close();
m_pathValue.Format(TEXT("%s"),pBuf);
str=m_pathValue;
delete pBuf;
int dot=m_pathValue.Find(',');
m_pathValue=m_pathValue.Left(dot);//取得字符‘,’前面的字符串
str=str.Right(1);//取得字符‘,’后面的字符
if(str=="1")
{//启动时运行导航软件
DWORD lp;
GetExitCodeProcess(execInf.hProcess,&lp);
if(lp!=STILL_ACTIVE)
{
execInf.cbSize = sizeof(execInf);
execInf.fMask = SEE_MASK_NOCLOSEPROCESS;
execInf.lpFile = m_pathValue;
execInf.lpVerb = TEXT("open");
if(ShellExecuteEx(&execInf)==0)
{//程序执行标志
isNavShell=TRUE;
}
}
KillTimer(1);
}
}
CDialog::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -