www.pudn.com > VC+mapX开发GPS车辆监控的源码.zip > MapFormView.cpp


// MapFormView.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "MapDemo.h" 
#include "MapDemoDoc.h" 
#include "MapView.h" 
#include "MapFormView.h" 
#include "MainFrm.h" 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CMapFormView 
 
IMPLEMENT_DYNCREATE(CMapFormView, CFormView) 
 
CMapFormView::CMapFormView() 
	: CFormView(CMapFormView::IDD) 
{ 
	//{{AFX_DATA_INIT(CMapFormView) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
	m_pCtrlMapX=NULL; 
} 
 
CMapFormView::~CMapFormView() 
{ 
} 
 
void CMapFormView::DoDataExchange(CDataExchange* pDX) 
{ 
	CFormView::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CMapFormView) 
	DDX_Control(pDX, IDC_MSFLEXGRID1, m_ctrlGrid); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CMapFormView, CFormView) 
	//{{AFX_MSG_MAP(CMapFormView) 
	ON_WM_SIZE() 
	ON_WM_DESTROY() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CMapFormView diagnostics 
 
#ifdef _DEBUG 
void CMapFormView::AssertValid() const 
{ 
	CFormView::AssertValid(); 
} 
 
void CMapFormView::Dump(CDumpContext& dc) const 
{ 
	CFormView::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CMapFormView message handlers 
 
void CMapFormView::OnInitialUpdate()  
{ 
	CMainFrame* pFrame=((CMainFrame*)AfxGetMainWnd()); 
	 
	m_pMapView=pFrame->m_pMapView; 
	if(m_pMapView!=NULL)  
			m_pCtrlMapX=&(m_pMapView->m_ctrlMapX); 
 
  	m_strEditLayer=m_pMapView->m_strEditLayer; 
	if(m_strEditLayer=="") 
	{ 
		m_pMapView->SendMessage(WM_COMMAND,ID_MAPEDIT_SELETTABLE); 
		m_strEditLayer=m_pMapView->m_strEditLayer; 
	} 
 
	CFormView::OnInitialUpdate(); 
 
	 
	pFrame->m_pFormView=this; 
	AddFormData(); 
	 
} 
 
void CMapFormView::OnSize(UINT nType, int cx, int cy)  
{ 
	CFormView::OnSize(nType, cx, cy); 
	 
	if(m_ctrlGrid.m_hWnd !=NULL)  
		m_ctrlGrid.MoveWindow(0,0,cx,cy,FALSE); 
	 
} 
 
void CMapFormView::OnDestroy()  
{ 
	CFormView::OnDestroy(); 
	CMainFrame* pFrame=((CMainFrame*)AfxGetMainWnd()); 
	pFrame->m_pFormView=NULL; 
	 
} 
 
void CMapFormView::AddFormData() 
{ 
    CMapXLayer layer; 
	m_strEditLayer=m_pMapView->m_strEditLayer; 
	if(m_pCtrlMapX==NULL) return; 
     
     
    if(m_strEditLayer!="") 
		layer=m_pCtrlMapX->GetLayers().Item(m_strEditLayer); 
	else return; 
	try { 
		 
		COleVariant vtLayer; 
		vtLayer.vt = VT_DISPATCH; 
		vtLayer.pdispVal = layer.m_lpDispatch; 
		vtLayer.pdispVal->AddRef(); 
           
	    CString str1=m_strEditLayer;  
		CMapXDataset dataSet; 
		 
		if(!IsInDataSet(m_strEditLayer))		 
		 dataSet=m_pCtrlMapX->GetDatasets().Add(miDataSetLayer, vtLayer, str1); 
 
        else  
			dataSet=m_pCtrlMapX->GetDatasets().Item(str1); 
		 
		 
		 
		 
		CMapXFields mapField= dataSet.GetFields(); 
        int cols,rows;  
		cols=mapField.GetCount(); 
		rows=dataSet.GetRowCount();  
		m_ctrlGrid.SetCols(cols+1); 
		m_ctrlGrid.SetRows(rows+1);  
          
        m_ctrlGrid.SetCol(0); 
		m_ctrlGrid.SetRow(0);  
		m_ctrlGrid.SetText("图元ID"); 
		for(int i=0;iReportError(); 
		e->Delete(); 
	} catch (COleException *e) { 
		e->ReportError(); 
		e->Delete(); 
	} 
//	MessageBox("test"); 
} 
 
void CMapFormView::WriteRows(int x, int y, int cols,CString str) 
{ 
	  //m_ctrlGrid.SetCol(x+1); 
	  //m_ctrlGrid.SetRow(y+1);  
      //m_ctrlGrid.SetText(str); 
 
	  int index=(y+1)*cols+x+1; 
	  m_ctrlGrid.SetTextArray(index, str); 
} 
 
BOOL CMapFormView::IsInDataSet(CString strName) 
{ 
	CMapXDatasets datasets=m_pCtrlMapX->GetDatasets(); 
	for(int i=1;i<=datasets.GetCount();i++) 
	{ 
		if(datasets.Item(i).GetName()==strName) return TRUE; 
 
	} 
 
   return FALSE; 
 
}