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