www.pudn.com > Geotest.rar > DataDlg.cpp


// DataDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "geotest.h" 
#include "DataDlg.h" 
 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CDataDlg dialog 
 
 
CDataDlg::CDataDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CDataDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CDataDlg) 
	//}}AFX_DATA_INIT 
} 
 
 
void CDataDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CDataDlg) 
	DDX_Control(pDX, IDC_LIST_DATA, m_ctrlDataList); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CDataDlg, CDialog) 
	//{{AFX_MSG_MAP(CDataDlg) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CDataDlg message handlers 
 
BOOL CDataDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	// TODO: Add extra initialization here 
	m_ctrlDataList.SetBkColor(RGB(185,255,185));    //设置控件背景颜色 
	//设置要显示的图片 
	pimagelist=new CImageList(); 
	pimagelist->Create(16,32,TRUE | ILC_COLOR8,3,1); 
	bitmap.LoadBitmap(IDB_BITMAPROOT); 
	pimagelist->Add(&bitmap,RGB(255,255,0)); 
	m_ctrlDataList.SetImageList(pimagelist,TVSIL_NORMAL); 
    //调用显示数据的函数 
	OnInitVar(); 
    OnInitDlg(); 
 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
void CDataDlg::OnInitDlg() 
{ 
	//设置窗口标题 
	CString strTitle; 
	strTitle.Format("查看属性数据 [ %s ] [数据总数: %d ]",m_strLayerName,m_lDataCount); 
 
	 
	SetWindowText(strTitle); 
 
	//初始化列表框 
	m_ctrlDataList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); 
	m_ctrlDataList.InsertColumn(0,"No.",LVCFMT_LEFT,40,0); 
 
	CString strFieldName; 
	COleVariant ValueVt; 
	 
	for (int i=0;iGetLayers().Item(m_strLayerName);  //指定层 
	//取得该属性数据的总数 
	m_lDataCount = m_layerSelect.AllFeatures().GetCount(); 
	 
	if(m_pMapX->GetDatasets().GetCount()GetLayers().GetCount()) 
	{ 
 
	COleVariant layerVt; 
	layerVt.vt = VT_DISPATCH; 
	layerVt.pdispVal = m_layerSelect.m_lpDispatch; 
	layerVt.pdispVal->AddRef(); 
	//绑定MAPINFO表的数据 
	m_dsFeature = m_pMapX->GetDatasets().Add(miDataSetLayer, layerVt,m_layerSelect.GetName()); 
	//取得该属性数据共有多少个字段 
	m_lFieldCount = m_dsFeature.GetFields().GetCount(); 
	} 
	else 
	{ 
		m_dsFeature = m_pMapX->GetDatasets().Item(m_layerSelect.GetName()); 
		//取得该属性数据共有多少个字段 
		m_lFieldCount = m_dsFeature.GetFields().GetCount(); 
	} 
} 
 
 
void CDataDlg::DisplayData()  //显示数据 
{ 
	//清空列表 
	m_ctrlDataList.DeleteAllItems(); 
 
	CString buffer; 
	COleVariant ValueVt; 
 
	m_layerSelect.BeginAccess(miAccessRead);  //读ACEESS表 
 
	for (long lRow = 0; lRow < m_lDataCount; lRow++) 
	{ 
		buffer.Format("%d",lRow+1); 
		m_ctrlDataList.InsertItem(lRow,buffer); 
 
		for (long lCol = 1; lCol <= m_lFieldCount; lCol++) 
		{ 
			ValueVt = m_dsFeature.GetValue( lRow+1, lCol); 
			ValueVt.ChangeType(VT_BSTR); 
			buffer = ValueVt.bstrVal; 
			SysFreeString(ValueVt.bstrVal); 
 
			m_ctrlDataList.SetItemText( lRow, lCol, buffer); 
		} 
	} 
 
	m_layerSelect.EndAccess(); 
 
	//m_pMapX->GetDatasets().RemoveAll(); 
 
	UpdateData(FALSE); 
 
}