createdatasetdlg.cpp
来自「用VC+SuperMap开发的校园GIS系统」· C++ 代码 · 共 169 行
CPP
169 行
// CreateDatasetDlg.cpp : implementation file
//
#include "stdafx.h"
#include "CampusGis.h"
#include "CreateDatasetDlg.h"
#include "MainFrm.h"
#include "sodataset.h"
#include "afxdlgs.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCreateDatasetDlg dialog
CCreateDatasetDlg::CCreateDatasetDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCreateDatasetDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCreateDatasetDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CCreateDatasetDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCreateDatasetDlg)
DDX_Control(pDX, IDC_DATASETTYPE, m_DatasetType);
DDX_Control(pDX, IDC_DATASETNAME, m_DatasetName);
DDX_Control(pDX, IDC_AIMDATASOURCE, m_Datasource);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCreateDatasetDlg, CDialog)
//{{AFX_MSG_MAP(CCreateDatasetDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCreateDatasetDlg message handlers
BOOL CCreateDatasetDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_DatasetType.AddString("点");
m_DatasetType.AddString("线");
m_DatasetType.AddString("面");
m_DatasetType.AddString("文本");
m_DatasetType.AddString("MrSid");
m_DatasetType.AddString("ECW");
CMainFrame *pFrame=(CMainFrame *)::AfxGetMainWnd();
m_pSuperWorkspace=&pFrame->m_SuperWorkspace;
long lCount;
CsoDataSource source;
lCount=m_pSuperWorkspace->GetDatasources().GetCount();
for(long i = 1; i <= lCount; i++)
{
source=m_pSuperWorkspace->GetDatasources().GetItem(COleVariant(i));
m_Datasource.AddString(source.GetAlias());
}
m_DatasetName.SetWindowText(_T("Dataset1"));
m_Datasource.SetCurSel(0);
m_DatasetType.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCreateDatasetDlg::OnOK()
{
// TODO: Add extra validation here
CsoDataSource source;
CString strSelName=_T(""),strName=_T("");
m_Datasource.GetWindowText(strSelName);
m_DatasetName.GetWindowText(strName);
for(long i = 1;i <= m_pSuperWorkspace->GetDatasources().GetCount();i++)
{
source=m_pSuperWorkspace->GetDatasources().GetItem(COleVariant(i));
if(source)
{
if(strSelName==source.GetAlias())
{
if(source.IsAvailableDatasetName(strName))
{
this->CreateDataset(strName,&source);
CDialog::OnOK();
}
else
{
AfxMessageBox("数据集名称不合法!");
m_DatasetName.SetFocus();
return;
}
}
}
else
{
AfxMessageBox("数据源错误!");
return;
}
}
}
void CCreateDatasetDlg::CreateDataset(CString strName,CsoDataSource *source)
{
BOOL bResult;
CsoDataset dataset;
CFileDialog dlg(true,NULL,NULL,OFN_OVERWRITEPROMPT,
"MrSid 图像文件(*.sid)|*.sid|ECW文件(*.ecw)|*.ecw|",NULL);
// TRACE("m_DatasetType.GetCurSel()=%d\n",m_DatasetType.GetCurSel());
switch(m_DatasetType.GetCurSel())
{
case 0:
dataset=source->CreateDataset((LPCTSTR)strName,
1/*scdPoint*/,0/*scoDefault*/,NULL);
break;
case 1:
dataset=source->CreateDataset((LPCTSTR)strName,
3/*scdLine*/,0/*scoDefault*/,NULL);
break;
case 2:
dataset=source->CreateDataset((LPCTSTR)strName,
5/*scdRegion*/,0/*scoDefault*/,NULL);
break;
case 3:
dataset=source->CreateDataset((LPCTSTR)strName,
7/*scdText*/,0/*scoDefault*/,NULL);
break;
case 4:
if(dlg.DoModal()==IDOK)
{
if(!dlg.GetFileName().IsEmpty() && dlg.m_ofn.nFilterIndex==0)
{
bResult=source->CreateMrSIDDataset((LPCTSTR)strName,
(LPCTSTR)dlg.m_ofn.lpstrFile,COleVariant(""));
// if(bResult)
// dataset=source->GetDatasets().GetItem(strName);
}
}
break;
case 5:
if(dlg.DoModal()==IDOK)
{
if(!dlg.GetFileName().IsEmpty() && dlg.m_ofn.nFilterIndex==1)
{
bResult=source->CreateECWDataset((LPCTSTR)strName,
(LPCTSTR)dlg.m_ofn.lpstrFile);
// if(bResult)
// dataset=source->GetDatasets().GetItem(strName);
}
}
break;
}
CMainFrame *pFrame=(CMainFrame *)::AfxGetMainWnd();
pFrame->WorkspManagerRefresh();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?