import3dgn2datasetdlg.cpp
来自「用VC+SuperMap开发的校园GIS系统」· C++ 代码 · 共 243 行
CPP
243 行
// Import3Dgn2DatasetDlg.cpp : implementation file
//
#include "stdafx.h"
#include "CampusGis.h"
#include "Import3Dgn2DatasetDlg.h"
#include "Import3Dgn1DatasetDlg.h"
#include "sodatasources.h"
#include "sodatasource.h"
#include "sodatapump.h"
#include "soimportparams.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CImport3Dgn2DatasetDlg dialog
CImport3Dgn2DatasetDlg::CImport3Dgn2DatasetDlg(CWnd* pParent /*=NULL*/)
: CDialog(CImport3Dgn2DatasetDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CImport3Dgn2DatasetDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CImport3Dgn2DatasetDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CImport3Dgn2DatasetDlg)
DDX_Control(pDX, IDOK, m_Ok);
DDX_Control(pDX, IDC_BTNREMOVEALL, m_btnRemoveAll);
DDX_Control(pDX, IDC_BTNREMOVE, m_btnRemove);
DDX_Control(pDX, IDC_BTNADDALL, m_btnAddAll);
DDX_Control(pDX, IDC_BTNADD, m_btnAdd);
DDX_Control(pDX, IDC_LSTSOURCELAYER, m_lstSourceLayer);
DDX_Control(pDX, IDC_LSTAIMLAYER, m_lstAimLayer);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CImport3Dgn2DatasetDlg, CDialog)
//{{AFX_MSG_MAP(CImport3Dgn2DatasetDlg)
ON_BN_CLICKED(IDC_BACK, OnBack)
ON_BN_CLICKED(IDC_BTNADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTNADDALL, OnBtnAddAll)
ON_BN_CLICKED(IDC_BTNREMOVE, OnBtnRemove)
ON_BN_CLICKED(IDC_BTNREMOVEALL, OnBtnRemoveAll)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CImport3Dgn2DatasetDlg message handlers
BOOL CImport3Dgn2DatasetDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//初始化
CString str;
for(int i=0;i<=10;i++)
{
str.Empty();
str.Format("%d",i);
m_lstSourceLayer.AddString(str);
}
m_lstSourceLayer.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CImport3Dgn2DatasetDlg::OnBack()
{
//上一步
CImport3Dgn1DatasetDlg *dlg=(CImport3Dgn1DatasetDlg *)GetParent();
dlg->ShowWindow(SW_SHOW);
DestroyWindow();
}
void CImport3Dgn2DatasetDlg::OnCancel()
{
//取消
CImport3Dgn1DatasetDlg *dlg=(CImport3Dgn1DatasetDlg *)GetParent();
dlg->Close();
DestroyWindow();
}
void CImport3Dgn2DatasetDlg::OnBtnAdd()
{
//添加
CString strSourceLayer;
int index=m_lstSourceLayer.GetCurSel();
if(index < 0)
return;
m_lstSourceLayer.GetText(index,strSourceLayer);
m_lstAimLayer.AddString(strSourceLayer);
m_lstSourceLayer.DeleteString(index);
m_lstAimLayer.SetCurSel(0);
if(m_lstSourceLayer.GetCount())
m_lstSourceLayer.SetCurSel(0);
else
{
m_btnAdd.EnableWindow(FALSE);
m_btnAddAll.EnableWindow(FALSE);
}
m_Ok.EnableWindow();
m_btnRemove.EnableWindow();
m_btnRemoveAll.EnableWindow();
}
void CImport3Dgn2DatasetDlg::OnBtnAddAll()
{
//全部添加
int i;
CString strLayerText;
for(i=0;i<m_lstSourceLayer.GetCount();i++)
{
m_lstSourceLayer.SetCurSel(i);
m_lstSourceLayer.GetText(i,strLayerText);
m_lstAimLayer.AddString(strLayerText);
}
m_lstAimLayer.SetCurSel(0);
m_lstSourceLayer.ResetContent();
m_btnRemove.EnableWindow();
m_btnRemoveAll.EnableWindow();
m_Ok.EnableWindow();
m_btnAdd.EnableWindow(FALSE);
m_btnAddAll.EnableWindow(FALSE);
}
void CImport3Dgn2DatasetDlg::OnBtnRemove()
{
//移除
CString strAimLayer;
int index;
index=m_lstAimLayer.GetCurSel();
if(index < 0)
return;
m_lstAimLayer.GetText(index,strAimLayer);
m_lstSourceLayer.AddString(strAimLayer);
m_lstAimLayer.DeleteString(index);
m_lstSourceLayer.SetCurSel(0);
if(!m_lstAimLayer.GetCount())
{
m_Ok.EnableWindow(FALSE);
m_btnRemove.EnableWindow(FALSE);
m_btnRemove.EnableWindow(FALSE);
}
else
m_lstAimLayer.SetCurSel(0);
m_btnAdd.EnableWindow();
m_btnAddAll.EnableWindow();
}
void CImport3Dgn2DatasetDlg::OnBtnRemoveAll()
{
//全部移除
int i;
CString str;
m_lstSourceLayer.ResetContent();
for(i=0;i<=63;i++)
{
str.Empty();
str.Format("%d",i);
m_lstSourceLayer.AddString(str);
}
m_lstSourceLayer.SetCurSel(0);
m_lstAimLayer.ResetContent();
m_Ok.EnableWindow(FALSE);
m_btnRemove.EnableWindow(FALSE);
m_btnRemoveAll.EnableWindow(FALSE);
m_btnAdd.EnableWindow();
m_btnAddAll.EnableWindow();
}
void CImport3Dgn2DatasetDlg::OnOK()
{
//确定
CsoDataSource objDs;
CsoDataPump objDp;
objDs=GetMainFramePointer()->m_SuperWorkspace.GetDatasources().GetItem(COleVariant(m_strDatasourceName));
if(!objDs)
{
AfxMessageBox("数据源"+m_strDatasourceName+"内部错误!");
return;
}
objDp=objDs.GetDataPump();
if(!objDp)
{
AfxMessageBox("DataPump内部错误!");
return;
}
objDp.GetDataImportParams().SetFileName(m_strPathName);
objDp.GetDataImportParams().SetFileType(16/*scfDGN*/);
objDp.GetDataImportParams().SetShowProgress(m_bShowProgress);
objDp.GetDataImportParams().SetImportAsCompressedDatset(m_bCompressed);
objDp.GetDataImportParams().SetIgnoreStyle(m_bIgnoreStyle);
GetMainFramePointer()->m_SuperWorkspace.SetDgnColorMappingTable(m_strColorFileName);
GetMainFramePointer()->m_SuperWorkspace.SetStyleMappingTable(m_strStyleFileName);
objDp.GetDataImportParams().SetImportAsCADDataset(m_bCADDataset);
if(m_bCADDataset)
objDp.GetDataImportParams().SetDatasetCAD(m_strCADLayerName);
if(m_bLineDataset)
objDp.GetDataImportParams().SetDatasetLine(m_strLineLayerName);
if(m_bPointDataset)
objDp.GetDataImportParams().SetDatasetPoint(m_strPointLayerName);
if(m_bRegionDataset)
objDp.GetDataImportParams().SetDatasetRegion(m_strRegionLayerName);
if(m_bTextDataset)
objDp.GetDataImportParams().SetDatasetText(m_strTextLayerName);
objDp.GetDataImportParams().SetDgnUnitsSelected(m_iUnitIndex);
BOOL bResult;
bResult=objDp.Import();
if(bResult)
{
GetMainFramePointer()->GetManager()->Refresh();
AfxMessageBox("转入成功!");
}
else
AfxMessageBox("转入失败!");
objDs.ReleaseDispatch();
objDp.ReleaseDispatch();
OnCancel();
CDialog::OnOK();
}
CMainFrame* CImport3Dgn2DatasetDlg::GetMainFramePointer()
{
CMainFrame *pFrame=(CMainFrame *)::AfxGetMainWnd();
return pFrame;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?