www.pudn.com > MapXgis.rar > MainFrm.cpp


// MainFrm.cpp : CMainFrame 类的实现 
// 
 
#include "stdafx.h" 
#include "MapXSampleMDI.h" 
 
#include "MainFrm.h" 
#include "MapXSampleMDIDoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 
 
// CMainFrame 
 
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) 
 
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) 
	ON_WM_CREATE() 
	ON_MESSAGE(WM_MAPXVIEW_CHANGED, OnMapViewChange) 
	ON_MESSAGE(WM_MAPX_EAGLE_FEATURE_MOVE, OnMapEagleChange) 
END_MESSAGE_MAP() 
 
 
static UINT indicators[] = 
{ 
	ID_SEPARATOR,           // 状态行指示器 
	ID_INDICATOR_CAPS, 
	ID_INDICATOR_NUM, 
	ID_INDICATOR_SCRL, 
}; 
 
 
// CMainFrame 构造/析构 
 
CMainFrame::CMainFrame() 
{ 
	// TODO: 在此添加成员初始化代码 
} 
 
CMainFrame::~CMainFrame() 
{ 
} 
 
 
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) 
		return -1; 
 
	//将打开的文档以TAB页方式呈现 
	m_MTIClientWnd.Attach(this,TCS_SINGLELINE|TCS_HOTTRACK); 
	 
	//主工具栏 
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP 
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) 
	{ 
		TRACE0("未能创建工具栏\n"); 
		return -1;      // 未能创建 
	} 
	//状态栏 
	if (!m_wndStatusBar.Create(this) || 
		!m_wndStatusBar.SetIndicators(indicators, 
		  sizeof(indicators)/sizeof(UINT))) 
	{ 
		TRACE0("未能创建状态栏\n"); 
		return -1;      // 未能创建 
	} 
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
	EnableDocking(CBRS_ALIGN_ANY); 
	DockControlBar(&m_wndToolBar); 
 
	//鹰眼栏 
	if (!InitMapXEagleBar())  
	{ 
		TRACE0("Failed to create dialog bar m_wndMapXEagleBar!\n"); 
		return -1;		// fail to create 
	} 
	//MapX的工具栏 
	if (!m_wndToolBarMap.Create(this) || 
		!m_wndToolBarMap.LoadToolBar(IDR_TOOLBARMAP)) 
	{ 
		TRACE0("未能创建MapX状态栏\n"); 
		return -1;      // fail to create 
	} 
	m_wndToolBarMap.SetBarStyle(m_wndToolBarMap.GetBarStyle() | 
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); 
	m_wndToolBarMap.EnableDocking(CBRS_ALIGN_ANY); 
	DockControlBar(&m_wndToolBarMap, AFX_IDW_DOCKBAR_RIGHT); 
 
	return 0; 
} 
 
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	if( !CMDIFrameWnd::PreCreateWindow(cs) ) 
		return FALSE; 
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或 
	// 样式 
 
	return TRUE; 
} 
 
 
// CMainFrame 诊断 
 
#ifdef _DEBUG 
void CMainFrame::AssertValid() const 
{ 
	CMDIFrameWnd::AssertValid(); 
} 
 
void CMainFrame::Dump(CDumpContext& dc) const 
{ 
	CMDIFrameWnd::Dump(dc); 
} 
 
#endif //_DEBUG 
 
 
// CMainFrame 消息处理程序 
 
 
BOOL CMainFrame::InitMapXEagleBar() 
{ 
	if( !m_wndMapXEagleBar.Create(this, ID_VIEW_MAPX_EAGLE_BAR, 
		_T("MapX鹰眼图"), CSize(250,250) )) 
	{ 
		TRACE0("Fail to create MapX Eagle Bar"); 
		return FALSE; 
	} 
//	m_wndMapXEagleBar.m_szFloat=CSize(250,250); 
	m_wndMapXEagleBar.SetMenuID( IDR_MAINFRAME, NULL, 1 ); 
	m_wndMapXEagleBar.EnableDocking( CBRS_ALIGN_ANY); 
	FloatControlBar( &m_wndMapXEagleBar, CPoint(100,100)); 
	//DockControlBar( &m_wndMapXEagleBar, AFX_IDW_DOCKBAR_BOTTOM); 
	return TRUE; 
} 
 
LRESULT CMainFrame::OnMapViewChange(WPARAM wParam, LPARAM lParam) 
{ 
	CDoubleRect* pRect=(CDoubleRect*)lParam; 
    double X1,Y1,X2,Y2;                      //声明坐标变量 
 
	X1=pRect->X1; 
	Y1=pRect->Y1; 
	X2=pRect->X2; 
	Y2=pRect->Y2; 
 
	m_wndMapXEagleBar.OnMapViewChange(X1,Y1,X2,Y2); 
	return S_OK; 
} 
 
LRESULT CMainFrame::OnMapEagleChange(WPARAM wParam, LPARAM lParam) 
{ 
	CDoublePoint* pPoint=(CDoublePoint*) lParam; 
	 
	CMapXSampleMDIApp* pApp = (CMapXSampleMDIApp*)AfxGetApp(); 
	CMapXSampleMDIDoc* pDoc = (CMapXSampleMDIDoc*) pApp->OpenWndByDocType("MapXSampleMDI"); 
 
	if(pDoc==NULL) 
		return S_FALSE; 
 
	pDoc->CenterPointX=pPoint->X; 
	pDoc->CenterPointY=pPoint->Y; 
	pDoc->UpdateAllViews(NULL); 
	return S_OK; 
}