#include "StdAfx.h" #include "LayerSiftDlg.h" ///////////////////////////////////////////////////////////////////////////////////////////////// CLayerFiltrationFileOperator::CLayerFiltrationFileOperator(LPCTSTR szFileName) : m_sFileName(szFileName) { } BOOL CLayerFiltrationFileOperator::ReadFile(CStringArray &aryLayers) const { CStdioFile txtFile; UINT uLen = 0; if (!txtFile.Open(m_sFileName, CFile::modeRead)) return FALSE; CStringArray arSCurName; CString sCurrString = _T(""); while (txtFile.ReadString(sCurrString)) { if (sCurrString == _T("")) continue; arSCurName.Add(sCurrString); } int nSize = arSCurName.GetSize(); if (nSize > 0) { bool bFind(false); for (int i=0; iSplitString(m_csTmpLayer, m_aryTmpLayer); } else if (!m_csIniFileLayer.IsEmpty()) { m_pFileBase->SplitString(m_csIniFileLayer, m_aryTmpLayer); } } m_bSelectEnt = FALSE; m_csTmpLayer = _T(""); } CLayerSiftDlg::~CLayerSiftDlg() { if (m_pFileBase != NULL) { delete m_pFileBase; m_pFileBase = NULL; } } void CLayerSiftDlg::DoDataExchange(CDataExchange* pDX) { CModelessDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_LAYER, m_edtLayerName); } BOOL CLayerSiftDlg::OnInitDialog() { CModelessDialog::OnInitDialog(); CString sText; for (int i=0; iLoadIcon(IDI_TG_LOGO); SetIcon(hIcon, FALSE); UpdateData(FALSE); return TRUE; } void CLayerSiftDlg::InitSpaceSize() { CRect rectBtn; GetDlgItem(IDC_BTN_SELECTINDRAW)->GetWindowRect(&rectBtn); // 图中选取< ScreenToClient(&rectBtn); BTNWID = rectBtn.Width(); BTNHEI = rectBtn.Height(); SPACEBTN = (int)(BTNHEI * 0.5); CRect rectTable; GetDlgItem(IDC_EDIT_LAYER)->GetWindowRect(&rectTable); ScreenToClient(&rectTable); SPACE = rectTable.left; PSPACE = rectTable.top; } void CLayerSiftDlg::LstLayerRect(CRect &rect, int dlgCx, int dlgCy) { int nLastWid = dlgCx - SPACE*3 - BTNWID, nHei = dlgCy - PSPACE*2; rect.left = SPACE; rect.right = rect.left + nLastWid; rect.top = PSPACE; rect.bottom = rect.top + nHei; } void CLayerSiftDlg::BtnSelectInDrawRect(CRect &rect, int dlgCx, int dlgCy) { rect.left = rect.right + SPACE; rect.right = rect.left + BTNWID; rect.top = rect.top; rect.bottom = rect.top + BTNHEI; } void CLayerSiftDlg::BtnOkRect(CRect &rect, int dlgCx, int dlgCy) { BtnCancelRect(rect, dlgCx, dlgCy); rect.bottom = rect.top - SPACEBTN; rect.top = rect.bottom - BTNHEI; } void CLayerSiftDlg::BtnCancelRect(CRect &rect, int dlgCx, int dlgCy) { CRect rectRef; LstLayerRect(rectRef, dlgCx, dlgCy); rect.left = rectRef.right + SPACE; rect.right = rect.left + BTNWID; rect.bottom = dlgCy - PSPACE; rect.top = rect.bottom - BTNHEI; } void CLayerSiftDlg::Layout(int cx, int cy) { CRect rectTable; LstLayerRect(rectTable, cx, cy); GetDlgItem(IDC_EDIT_LAYER)->SetWindowPos(NULL, rectTable.left, rectTable.top, rectTable.Width(), rectTable.Height(), SWP_NOZORDER); BtnSelectInDrawRect(rectTable, cx, cy); GetDlgItem(IDC_BTN_SELECTINDRAW)->SetWindowPos(NULL, rectTable.left, rectTable.top, rectTable.Width(), rectTable.Height(), SWP_NOZORDER); BtnOkRect(rectTable, cx, cy); GetDlgItem(IDOK)->SetWindowPos(NULL, rectTable.left, rectTable.top, rectTable.Width(), rectTable.Height(), SWP_NOZORDER); BtnCancelRect(rectTable, cx, cy); GetDlgItem(IDCANCEL)->SetWindowPos(NULL, rectTable.left, rectTable.top, rectTable.Width(), rectTable.Height(), SWP_NOZORDER); } BEGIN_MESSAGE_MAP(CLayerSiftDlg, CModelessDialog) ON_BN_CLICKED(IDC_BTN_SELECTINDRAW, OnBlickSelectOnDraw) ON_BN_CLICKED(IDOK, OnBnClickedOk) ON_WM_SIZE() ON_WM_GETMINMAXINFO() END_MESSAGE_MAP() // 支持对话框大小变化 void CLayerSiftDlg::OnSize(UINT nType, int cx, int cy) { CModelessDialog::OnSize(nType, cx, cy); if (IsInitSizeData()) Layout(cx, cy); } // 设置拖动对话框时,最小不应该小于最初值 void CLayerSiftDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { lpMMI->ptMinTrackSize.x = 270; lpMMI->ptMinTrackSize.y = 174; CModelessDialog::OnGetMinMaxInfo(lpMMI); } void CLayerSiftDlg::OnBnClickedOk() { CString strName; m_edtLayerName.GetWindowText(strName); strName.Replace(s_sRet, s_sSplit); strName.TrimLeft(_T("&")); strName.TrimRight(_T("&")); // 写文件 if (m_pFileBase != NULL) { m_pFileBase->SplitString(strName, m_aryTmpLayer); m_pFileBase->WriteFile(m_aryTmpLayer); m_csIniFileLayer = strName; } m_bSelectEnt = FALSE; m_csTmpLayer = _T(""); CModelessDialog::OnOK(); } void CLayerSiftDlg::OnBlickSelectOnDraw() { m_bSelectEnt = TRUE; m_edtLayerName.GetWindowText(m_csTmpLayer); m_csTmpLayer.Replace(s_sRet, s_sSplit); m_csTmpLayer.TrimLeft(_T("&")); m_csTmpLayer.TrimRight(_T("&")); CModelessDialog::OnOK(); } // 返回用户设置的图层名 CString CLayerSiftDlg::GetLayerName() { CString csText; for (int i=0; iReadFile(m_aryTmpLayer)) && m_aryTmpLayer.GetSize()>0) { m_csIniFileLayer = _T(""); for (int i=0; i