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

📄 gpsdlg.cpp

📁 CE导航界面。 CE导航界面。
💻 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 + -