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 + -
显示快捷键?