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