?? layermanagedlg.cpp
字號:
// LayerManageDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SimpleMap.h"
#include "LayerManageDlg.h"
#include "MainFrm.h"
#include "SimpleMapDoc.h"
#include "SimpleMapView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLayerManageDlg dialog
CLayerManageDlg::CLayerManageDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLayerManageDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLayerManageDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CLayerManageDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLayerManageDlg)
DDX_Control(pDX, IDC_LIST_LAYERS, m_ctrlListLayers);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLayerManageDlg, CDialog)
//{{AFX_MSG_MAP(CLayerManageDlg)
ON_NOTIFY(NM_CLICK, IDC_LIST_LAYERS, OnClickListLayers)
ON_BN_CLICKED(IDC_DELETE_LAYER, OnDeleteLayer)
ON_BN_CLICKED(IDC_ADD_LAYER, OnAddLayer)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_SET_LAYER, OnSetLayer)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLayerManageDlg message handlers
BOOL CLayerManageDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//1.設置表頭
m_ctrlListLayers.InsertColumn(0,_T("Layer Name"),LVCFMT_LEFT,220,-1);
m_ctrlListLayers.SetExtendedStyle(LVS_EX_FULLROWSELECT);
//2.加載圖層信息
LoadLayers();
m_nSelected=-1;
//3.設置填充方式
m_nFillStyle=0;
((CButton*)(GetDlgItem(IDC_RADIO1)))->SetCheck(BST_CHECKED);
((CButton*)(GetDlgItem(IDC_RADIO2)))->SetCheck(BST_UNCHECKED);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLayerManageDlg::LoadLayers()
{
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
CSimpleMapView *pView = (CSimpleMapView*)pFrame->GetActiveView();
CSimpleMapDoc *pDoc = pView->GetDocument();
CMapLayer *pLayer;
m_ctrlListLayers.DeleteAllItems();
//增加圖層到列表
int iCount = pDoc->m_MapLayers.GetCount();
for(int i = 0 ; i < iCount ; i++ )
{
pLayer = pDoc->m_MapLayers.GetAt(i);
m_ctrlListLayers.InsertItem(i,pLayer->GetLayerName(),-1);
}
m_nSelected=-1;
}
void CLayerManageDlg::OnClickListLayers(NMHDR* pNMHDR, LRESULT* pResult)
{
//選中一條記錄
if(m_ctrlListLayers.GetSelectionMark()!=-1)
{
m_nSelected=m_ctrlListLayers.GetSelectionMark();
}
else
{
m_nSelected=-1;
}
*pResult = 0;
}
void CLayerManageDlg::OnDeleteLayer()
{
if(m_nSelected==-1)
{
AfxMessageBox(L"Does please select the layer you want to delete.");
return;
}
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
CSimpleMapView *pView = (CSimpleMapView*)pFrame->GetActiveView();
CSimpleMapDoc *pDoc = pView->GetDocument();
pDoc->m_MapLayers.Remove(m_nSelected);
LoadLayers();
}
void CLayerManageDlg::OnAddLayer()
{
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
CSimpleMapView *pView = (CSimpleMapView*)pFrame->GetActiveView();
CSimpleMapDoc *pDoc = pView->GetDocument();
CString csFilter = " shp Files (*.shp)|*.shp||";
CFileDialog fDlg(TRUE,0,0,OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,(LPCTSTR)csFilter
,NULL);
pFrame = (CMainFrame*)AfxGetMainWnd();
if( fDlg.DoModal() != IDCANCEL )
{
CString csFileName = fDlg.GetPathName();
CMapLayer* pLayer = new CMapLayer;
pLayer->SetLayerName(csFileName);
if ( pLayer->LoadData(csFileName) > 0 )
{
pDoc->m_MapLayers.Add(pLayer);
pDoc->m_MapLayers.GetAllExtent(pDoc->m_AllExtent);
if ( pDoc->m_MapLayers.GetCount() == 1 )
{
pView = (CSimpleMapView*)pFrame->GetActiveView();
pView->InitScale();
}
}
else
{
::MessageBox(NULL,L"Load File Failed!",L"Tips",MB_OK);
delete pLayer;
}
}
LoadLayers();
}
void CLayerManageDlg::OnRadio1()
{
m_nFillStyle=0;
((CButton*)(GetDlgItem(IDC_RADIO1)))->SetCheck(BST_CHECKED);
((CButton*)(GetDlgItem(IDC_RADIO2)))->SetCheck(BST_UNCHECKED);
}
void CLayerManageDlg::OnRadio2()
{
m_nFillStyle=1;
((CButton*)(GetDlgItem(IDC_RADIO1)))->SetCheck(BST_UNCHECKED);
((CButton*)(GetDlgItem(IDC_RADIO2)))->SetCheck(BST_CHECKED);
}
void CLayerManageDlg::OnSetLayer()
{
if(m_nSelected==-1)
{
AfxMessageBox(L"Does please select the layer you want to set.");
return;
}
if(m_nFillStyle==0)
{
CSingleFillDlg Dialog1;
Dialog1.m_csLayerName=m_ctrlListLayers.GetItemText(m_nSelected,0);
Dialog1.DoModal();
}
else
{
CUniqueFillDlg Dialog1;
Dialog1.m_csLayerName=m_ctrlListLayers.GetItemText(m_nSelected,0);
Dialog1.DoModal();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -