📄 dlgselect.cpp
字号:
// DlgSelect.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "DlgSelect.h"
#include "PathAnalyst.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgSelect dialog
CDlgSelect::CDlgSelect(CWnd* pParent /*=NULL*/)
: CDialog(CDlgSelect::IDD, pParent)
{//初始化变量
//{{AFX_DATA_INIT(CDlgSelect)
//}}AFX_DATA_INIT
m_strMapName = _T("");
m_strDatasourceAlias= _T("");
m_strDatasetName= _T("");
m_bMap = false;
}
void CDlgSelect::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgSelect)
DDX_Control(pDX, IDC_LIST_DATASET, m_lstDataset);
DDX_Control(pDX, IDC_COMBO_DATASOURCE, m_cmbDataSource);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgSelect, CDialog)
//{{AFX_MSG_MAP(CDlgSelect)
ON_CBN_SELCHANGE(IDC_COMBO_DATASOURCE, OnSelchangeComboDatasource)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgSelect message handlers
BOOL CDlgSelect::OnInitDialog()
{//初始化对话框
CDialog::OnInitDialog();
//创建一个列
CRect rcClient;
m_lstDataset.GetClientRect(&rcClient);
CString strInfo[1];
int nWidth[1];
nWidth[0] = rcClient.Width();
BuildColumns(1,nWidth,strInfo);
if ( m_bMap )
{
//只显示地图列表
m_cmbDataSource.EnableWindow( FALSE );
this->SetDlgItemText( IDC_STATIC_DATASET, _T("请选择地图名:") );
AddMap();
}
else
{
//显示数据源和数据集列表
m_ImageList.Create(IDB_BITMAP_DATAVIEW, 16, 0, RGB (255, 0, 0));
m_lstDataset.SetImageList(&m_ImageList,LVSIL_SMALL);
m_lstDataset.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES);
//先清空数据源列表
m_cmbDataSource.ResetContent();
m_cmbDataSource.EnableWindow( TRUE );
//获取数据源
long nDataSourceCount = theApp.m_WorkSpace.GetDataSourceCount();
for ( register i=0; i<nDataSourceCount; i++ )
{
CSeDataSource *pDataSource = theApp.m_WorkSpace.GetDataSourceAt( i );
if ( pDataSource )
{
CString strName = pDataSource->GetAlias();//别名
m_cmbDataSource.InsertString( i, strName);
}
}
m_cmbDataSource.SetCurSel( 0 );
//填入数据集到列表框中
AddDataset();
UpdateData(FALSE);
}
return TRUE;
}
void CDlgSelect::BuildRows( int nRows, CString *pcValue,int nImage)
{
//创建列表框的行
LV_ITEM lvitem;
int iItem = m_lstDataset.GetItemCount(),
iSubItem = 0,
iActualItem = 0;
for (iSubItem = 0; iSubItem < nRows; iSubItem++)
{
lvitem.mask = LVIF_TEXT | (iSubItem == 0 ? LVIF_IMAGE : 0);
lvitem.iItem = iItem;
lvitem.iSubItem = iSubItem;
lvitem.pszText = (unsigned short*)(LPCTSTR)pcValue[iSubItem];
lvitem.iImage = nImage;
if (iSubItem == 0)
iActualItem = m_lstDataset.InsertItem(&lvitem);
else
m_lstDataset.SetItem(&lvitem);
}
}
void CDlgSelect::BuildColumns(int nCols, int *nWidth, CString *csCol)
{
//创建列表框的列
LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
for(register i = 0; i < nCols; i++)
{
lvc.iSubItem = i;
lvc.pszText = (unsigned short*)(LPCTSTR)csCol[i];
lvc.cx = nWidth[i];
lvc.fmt = LVCFMT_LEFT;
m_lstDataset.InsertColumn(i,&lvc);
}
}
void CDlgSelect::AddMap()
{
//将地图名加入列表框中
CSeMaps *pMaps = theApp.m_WorkSpace.GetMaps();
if ( pMaps )
{
for ( register i=0; i<pMaps->GetMapCount(); i++ )
{
CSeMapDef MapDef;
CString strInfo[1];
int nImage = 0;
if ( pMaps->GetMapAt( i, MapDef ) )
{
m_strMapName = MapDef.m_strMapName;
strInfo[0] = m_strMapName;
BuildRows(1,strInfo,nImage);
}
}
}
}
void CDlgSelect::AddDataset()
{
//将网络数据集加入列表框中
int nSelItem = m_cmbDataSource.GetCurSel();
CSeDataSource *pDataSource = theApp.m_WorkSpace.GetDataSourceAt( nSelItem );
if ( pDataSource )
{
m_strDatasourceAlias = pDataSource->GetAlias();
long nDatasetCount = pDataSource->GetDatasetCount();
for ( register i=0; i<nDatasetCount; i++ )
{
CString strDatasetInfo[1];
int nImage = 0;
CSeDataset *pDataset = pDataSource->GetDatasetAt( i );
if ( pDataset )
{
if ( pDataset->GetType() == CSeDatasetInfo::Network )
{
strDatasetInfo[0] = pDataset->GetName();
nImage = 4;
BuildRows(1,strDatasetInfo,nImage);
}
}
}
}
}
void CDlgSelect::OnOK()
{//选择成功
UpdateData( TRUE );
CString strDatasetName;
POSITION pos = m_lstDataset.GetFirstSelectedItemPosition();
if ( pos!=NULL )
{
int nItem = m_lstDataset.GetNextSelectedItem( pos );
if ( nItem != -1 )
{
if ( !m_bMap )
{//返回选择的数据集名
m_strDatasetName = m_lstDataset.GetItemText( nItem, 0);
}
else
{//返回选择的地图名
m_strMapName = m_lstDataset.GetItemText( nItem, 0 );
}
}
}
CDialog::OnOK();
}
void CDlgSelect::OnCancel()
{//取消选择
CDialog::OnCancel();
}
void CDlgSelect::OnSelchangeComboDatasource()
{
//刷新数据集列表
m_lstDataset.DeleteAllItems();
AddDataset();
}
CSeDatasetVector * CDlgSelect::GetDataset()
{//获取网络数据集
CSeDataSource* pDataSource = theApp.m_WorkSpace.GetDataSourceByAlias( m_strDatasourceAlias );
if( pDataSource != NULL )
{
CSeDatasetVector* pDataset = (CSeDatasetVector *)pDataSource->GetDataset( m_strDatasetName );
if( pDataset && pDataset->GetType() == CSeDatasetInfo::Network )
{
return pDataset;
}
return NULL;
}
return NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -