www.pudn.com > HPMapx.rar > HPMapxDlg.cpp
// HPMapxDlg.cpp : implementation file
//
#include "stdafx.h"
#include "HPMapx.h"
#include "HPMapxDlg.h"
CHPMapxDlg::CHPMapxDlg(CWnd* pParent):CDialog(CHPMapxDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CHPMapxDlg)
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CHPMapxDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHPMapxDlg)
//}}AFX_DATA_MAP
}
#define OnOK CDialog::OnOK
BEGIN_MESSAGE_MAP(CHPMapxDlg, CDialog)
//{{AFX_MSG_MAP(CHPMapxDlg)
ON_WM_TIMER()
ON_WM_SIZE()
ON_WM_DESTROY()
ON_WM_CTLCOLOR()
ON_COMMAND(IDC_ZOOMIN, OnToolZoomin)
ON_COMMAND(IDC_ZOOMOUT, OnToolZoomout)
ON_COMMAND(IDC_PAN, OnToolPan)
ON_COMMAND(IDC_MAP_ALL, OnMapEntire)
ON_COMMAND(ID_SYS_EXIT, OnOK)
ON_COMMAND(ID_MENUMSG_SHOW, OnShow)
ON_COMMAND(ID_MENUMSG_HIDE, OnHide)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_RT_MESSAGE, OnRealTimeMessage)
ON_MESSAGE(WM_USER_RMCPOS, OnReposition)
END_MESSAGE_MAP()
// 全屏
void CHPMapxDlg::OnSetFullScreen()
{
static int MENU_HIGHT = 26;
static RECT rc;
GetWindowRect( &rc);
static SHINITDLGINFO m_shidi;
m_shidi.dwMask = SHIDIM_FLAGS;
m_shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR;
m_shidi.hDlg = m_hWnd;
SHInitDialog(&m_shidi);
::CommandBar_Show(m_pWndEmptyCB->m_hWnd, FALSE);
SetForegroundWindow();
CenterWindow(GetDesktopWindow());
SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON| SHFS_HIDESTARTICON);
MoveWindow( rc.left, rc.top-MENU_HIGHT, rc.right,rc.bottom+MENU_HIGHT, TRUE);
// SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
}
// GPS经纬度,重定位
LRESULT CHPMapxDlg::OnReposition(WPARAM wparam, LPARAM lparama)
{
double x = m_GpsMsg.GetMapPosX(),
y = m_GpsMsg.GetMapPosY();
if( x == (double)0.0 || y==(double)0.0 )
return 0;
m_GpsMap.SetStartXY( x ,y);
m_GpsMap.UpdateSpeed(m_GpsMsg.GetSpeed());
m_GpsMap.UpdateDirection(m_GpsMsg.GetDirection());
m_GpsMap.UpdateGraph();
m_GpsMsg.Clear();
AddMessage( __TEXT("成功取得定位信息") );
return 1;
}
LRESULT CHPMapxDlg::OnRealTimeMessage(WPARAM wparam,LPARAM lparama)
{
AddMessage(theApp.strRealTimeMsg);
return 0;
}
// 定时器
void CHPMapxDlg::OnTimer(UINT nIDEvent)
{
// For Debug Application
if( nIDEvent == 1 )
SendMessage(WM_USER_GGAPOS);
CDialog::OnTimer(nIDEvent);
}
void CHPMapxDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( cx != 0 &&
cy != 0 &&
m_GpsMap.GetSafeHwnd())
m_GpsMap.MoveWindow(0,0,cx,cy,TRUE);
}
void CHPMapxDlg::OnDestroy()
{
CDialog::OnDestroy();
theApp.SetRotation(false);
}
void CHPMapxDlg::AddMenu()
{
SHMENUBARINFO mbi;
HINSTANCE hInst = AfxGetInstanceHandle();
memset(&mbi, 0, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = m_hWnd;
mbi.nToolBarId = IDR_MENUBAR;
mbi.hInstRes = hInst;
mbi.nBmpId = 0;
mbi.cBmpImages = 0;
SHCreateMenuBar(&mbi);
CommandBar_AddBitmap(mbi.hwndMB, hInst, IDR_CMDBAR, 9, 16, 15);
}
void CHPMapxDlg::AddMessage(LPCTSTR str)
{
m_MsgWindow.SetMessage(str);
m_MsgWindow.ShowWindowEx();
}
bool CHPMapxDlg::LoadMapx()
{
bool b = m_GpsMap.Create(NULL,NULL,0,CRect(0,0,0,0),this,0)==TRUE;
if( b )
{
m_GpsMap.ShowWindow(SW_SHOW);
return true;
}
return false;
}
bool CHPMapxDlg::OpenGPS()
{
m_GpsMsg.Create(NULL,NULL,0,CRect(0,0,0,0),this,0);
return m_GpsMsg.OpenGPS();
}
HBRUSH CHPMapxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch(nCtlColor)
{
case CTLCOLOR_STATIC: pDC->SetBkMode(TRANSPARENT);
return NULL;
}
return hbr;
}
// 初始化
BOOL CHPMapxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
AddMenu();
if( ! m_MsgWindow.IsCreated())
m_MsgWindow.Create(CPoint(0,BOT_START),this,IDB_BITMAP_BK);
SetWindowText( __TEXT("天辉导航系统") );
bool b = LoadMapx();
theApp.HideSplash();
if( !b )
{
AddMessage( __TEXT("系统数据损坏,我们对此表示抱歉"));
theApp.DestroySplash();
}
theApp.ShowSplash();
b = OpenGPS();
theApp.DestroySplash();
b ?
AddMessage( __TEXT("正在解析GPS信息 ...") ):
AddMessage( __TEXT("GPS卫星信号错误,无法定位") );
m_MsgWindow.HideWindowEx();
return TRUE;
}