// E:\Visual Studio 2008\Projects\TArch_T20v3.0\Src\Arx\tch_siteplan\ParkingAlterDlg.cpp : 实现文件 // #include "stdafx.h" #include "ParkingAlterDlg.h" #define UIFRAME_API __declspec( dllimport ) #include "DataLoadAndSave.h" namespace { #define TARCH20_SYMBOL_KEY_PARKINGALTER _T("ParkingAlter_CString") //注册表项 #define TARCH20_SYMBOL_TERMNAME _T("AllControlWndData\\SymbolWndData") //键 #define DIVSTRING _T("^@^") CString format(int i) { CString str; str.Format(_T("%d"), i); return str; } CString format(bool bValue) { CString str; str.Format(_T("%d"), (int)bValue); return str; } CString format(double dValue) { CString str; str.Format(_T("%f"),dValue); return str; } CString MergeStr(const std::vector& subStr) { CString str = _T(""); CString strTemp = _T(""); std::vector::const_iterator iter = subStr.begin(); if (iter == subStr.end()) return str; strTemp = *iter; if (strTemp.IsEmpty()) strTemp = _T(" "); str += strTemp; ++iter; for (iter; iter != subStr.end(); ++iter) { strTemp = *iter; if (strTemp.IsEmpty()) strTemp = _T(" "); str += DIVSTRING + strTemp; } return str; } int SplitString(LPCTSTR pszOri, LPCTSTR pszSplit, std::vector &vec) { do { if (!pszOri) break; vec.clear(); if (!pszSplit) { vec.push_back(pszOri); return 1; } CString sOri(pszOri), sSplit(pszSplit), sRel(_T("")); int nSplitLen(sSplit.GetLength()), nFindPos(0), nRel(0); while ((nFindPos = sOri.Find(sSplit, 0)) != -1) { sRel = sOri.Mid(0, nFindPos); vec.push_back(sRel); sOri = sOri.Right(sOri.GetLength() - nFindPos - nSplitLen); ++nRel; } if (!sOri.IsEmpty()) { vec.push_back(sOri); ++nRel; } return nRel; } while (false); return 0; } } // CParkingAlterDlg 对话框 IMPLEMENT_DYNAMIC(CParkingAlterDlg, CModelessDialog) CParkingAlterDlg::CParkingAlterDlg(CWnd* pParent /*=NULL*/) : CModelessDialog(CParkingAlterDlg::IDD, pParent) { m_nWidthCheck = FALSE; if(DocGetMeterUnitDraw()) { m_strParkingWidth = _T("2.400"); m_strParkingDept = _T("5.300"); } else { m_strParkingWidth = _T("2400"); m_strParkingDept = _T("5300"); } m_nWidthChangeDirec = 0; m_nDeptCheck = FALSE; m_nDeptChangeDirec = 0; m_nRefromCheck = FALSE; m_strStartSerial = _T("A001"); m_nResetCheck = FALSE; m_nTextLoc = 0; LoadRegeditSaveData(); } CParkingAlterDlg::~CParkingAlterDlg() { SaveToRegeditData(); } void CParkingAlterDlg::DoDataExchange(CDataExchange* pDX) { CModelessDialog::DoDataExchange(pDX); DDX_Check(pDX, IDC_CHK_PARKING_WIDTH, m_nWidthCheck); DDX_Check(pDX, IDC_CHK_PARKING_DEPT, m_nDeptCheck); DDX_Check(pDX, IDC_CHK_SERIAL_REFROM, m_nRefromCheck); DDX_Check(pDX, IDC_CHK_SERIAL_RESET, m_nResetCheck); DDX_Text(pDX, IDC_EDT_CHANGE_WIDTH, m_strParkingWidth); DDX_Text(pDX, IDC_EDT_CHANGE_DEPT, m_strParkingDept); DDX_Text(pDX, IDC_EDT_SERIAL_REFROM, m_strStartSerial); DDX_Radio(pDX, IDC_RAD_RESETSERIAL_OUTSIDE, m_nTextLoc); DDX_Radio(pDX, IDC_RAD_CHANGEWIDTH_MID,m_nWidthChangeDirec); DDX_Radio(pDX, IDC_RAD_CHANGEDEPT_MID, m_nDeptChangeDirec); CModelessDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CParkingAlterDlg, CModelessDialog) ON_BN_CLICKED(IDC_CHK_PARKING_WIDTH, OnBnClickedChkWidth) ON_BN_CLICKED(IDC_CHK_PARKING_DEPT, OnBnClickedChkDept) ON_BN_CLICKED(IDC_CHK_SERIAL_REFROM, OnBnClickedChkSerialRefrom) ON_BN_CLICKED(IDC_CHK_SERIAL_RESET, OnBnClickedChkSerialReset) ON_EN_KILLFOCUS(IDC_EDT_CHANGE_WIDTH, OnEnKillfocusEdtWidth) ON_EN_KILLFOCUS(IDC_EDT_CHANGE_DEPT, OnEnKillfocusEdtDept) ON_EN_KILLFOCUS(IDC_EDT_SERIAL_REFROM, OnEnKillfocusEdtSerial) ON_BN_CLICKED(IDC_RAD_CHANGEWIDTH_MID, OnBnClickedWidthDirec) ON_BN_CLICKED(IDC_RAD_CHANGEWIDTH_UNILATERAL, OnBnClickedWidthDirec) ON_BN_CLICKED(IDC_RAD_CHANGEDEPT_MID, OnBnClickedDeptDirec) ON_BN_CLICKED(IDC_RAD_CHANGEDEPT_UNILATERAL, OnBnClickedDeptDirec) ON_BN_CLICKED(IDC_RAD_RESETSERIAL_OUTSIDE, OnBnClickedTextLoc) ON_BN_CLICKED(IDC_RAD_RESETSERIAL_INSIDE, OnBnClickedTextLoc) ON_BN_CLICKED(IDC_RAD_RESETSERIAL_MID, OnBnClickedTextLoc) ON_WM_CLOSE() END_MESSAGE_MAP() // CParkingAlterDlg 消息处理程序 BOOL CParkingAlterDlg::OnInitDialog() { CModelessDialog::OnInitDialog(); m_unit = DocGetMeterUnitDraw() ? eMeter : eMillimetre; CString sCaption(_T("")); sCaption.Format(_T("车位修改(单位:%s)"), m_unit == eMeter ? _T("M") : _T("mm")); SetWindowText(sCaption); UpdataControlState(); return TRUE; } void CParkingAlterDlg::LoadRegeditSaveData() { CString strTmp; DataLoadAndSave::readRecordDataCString(TARCH20_SYMBOL_KEY_PARKINGALTER, strTmp, TARCH20_SYMBOL_TERMNAME); if (strTmp.IsEmpty()) return; //将str划分为vector使用 DIVSTRING 为分隔符 std::vector strWndData; SplitString(strTmp, DIVSTRING, strWndData); if (strWndData.size() <10) { return; } double dWidth, dDept; m_nWidthCheck = _ttoi(strWndData[0]); dWidth = _ttof(strWndData[1]); m_nWidthChangeDirec = _ttoi(strWndData[2]); //3 m_nDeptCheck = _ttoi(strWndData[3]); dDept = _ttof(strWndData[4]); m_nDeptChangeDirec = _ttoi(strWndData[5]); //6 m_nRefromCheck = _ttoi(strWndData[6]); m_strStartSerial = strWndData[7]; m_nResetCheck = _ttoi(strWndData[8]); //9 m_nTextLoc = _ttoi(strWndData[9]); dWidth = _AS_SYS_UNIT(dWidth); dDept = _AS_SYS_UNIT(dDept); if (DocGetMeterUnitDraw()) { m_strParkingWidth.Format(_T("%.3f"), dWidth); m_strParkingDept.Format(_T("%.3f"), dDept); } else { m_strParkingWidth.Format(_T("%.0f"), dWidth); m_strParkingDept.Format(_T("%.0f"), dDept); } } void CParkingAlterDlg::SaveToRegeditData() { double dWidth = _ttof(m_strParkingWidth); double dDept = _ttof(m_strParkingDept); if (DocGetMeterUnitDraw()) { dWidth *= 1000; dDept *= 1000; } std::vector strWndData; strWndData.clear(); strWndData.push_back(format(m_nWidthCheck)); strWndData.push_back(format(dWidth)); strWndData.push_back(format(m_nWidthChangeDirec)); strWndData.push_back(format(m_nDeptCheck)); strWndData.push_back(format(dDept)); strWndData.push_back(format(m_nDeptChangeDirec)); strWndData.push_back(format(m_nRefromCheck)); strWndData.push_back(m_strStartSerial); strWndData.push_back(format(m_nResetCheck)); strWndData.push_back(format(m_nTextLoc)); CString strTmp = MergeStr(strWndData);//组合字符串 DataLoadAndSave::writeRecordDataCString(TARCH20_SYMBOL_KEY_PARKINGALTER, strTmp, TARCH20_SYMBOL_TERMNAME); } void CParkingAlterDlg::UpdataControlState() { if (m_nWidthCheck) { ((CEdit*)(GetDlgItem(IDC_EDT_CHANGE_WIDTH)))->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEWIDTH_MID)))->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEWIDTH_UNILATERAL)))->EnableWindow(TRUE); } else { ((CEdit*)(GetDlgItem(IDC_EDT_CHANGE_WIDTH)))->EnableWindow(FALSE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEWIDTH_MID)))->EnableWindow(FALSE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEWIDTH_UNILATERAL)))->EnableWindow(FALSE); } if (m_nDeptCheck) { ((CEdit*)(GetDlgItem(IDC_EDT_CHANGE_DEPT)))->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEDEPT_MID)))->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEDEPT_UNILATERAL)))->EnableWindow(TRUE); } else { ((CEdit*)(GetDlgItem(IDC_EDT_CHANGE_DEPT)))->EnableWindow(FALSE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEDEPT_MID)))->EnableWindow(FALSE); ((CButton*)(GetDlgItem(IDC_RAD_CHANGEDEPT_UNILATERAL)))->EnableWindow(FALSE); } if (m_nRefromCheck) { ((CEdit*)(GetDlgItem(IDC_EDT_SERIAL_REFROM)))->EnableWindow(TRUE); } else { ((CEdit*)(GetDlgItem(IDC_EDT_SERIAL_REFROM)))->EnableWindow(FALSE); } if (m_nResetCheck) { ((CButton*)(GetDlgItem(IDC_RAD_RESETSERIAL_OUTSIDE)))->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_RAD_RESETSERIAL_INSIDE)))->EnableWindow(TRUE); ((CButton*)(GetDlgItem(IDC_RAD_RESETSERIAL_MID)))->EnableWindow(TRUE); } else { ((CButton*)(GetDlgItem(IDC_RAD_RESETSERIAL_OUTSIDE)))->EnableWindow(FALSE); ((CButton*)(GetDlgItem(IDC_RAD_RESETSERIAL_INSIDE)))->EnableWindow(FALSE); ((CButton*)(GetDlgItem(IDC_RAD_RESETSERIAL_MID)))->EnableWindow(FALSE); } } void CParkingAlterDlg::OnBnClickedChkWidth() { UpdateData(TRUE); UpdataControlState(); } void CParkingAlterDlg::OnBnClickedChkDept() { UpdateData(TRUE); UpdataControlState(); } void CParkingAlterDlg::OnBnClickedChkSerialRefrom() { UpdateData(TRUE); UpdataControlState(); } void CParkingAlterDlg::OnBnClickedChkSerialReset() { UpdateData(TRUE); UpdataControlState(); } void CParkingAlterDlg::OnClose() { PostCommand(_T(" ")); CModelessDialog::OnClose(); } void CParkingAlterDlg::OnEnKillfocusEdtWidth() { UpdateData(TRUE); } void CParkingAlterDlg::OnEnKillfocusEdtDept() { UpdateData(TRUE); } void CParkingAlterDlg::OnEnKillfocusEdtSerial() { UpdateData(TRUE); } void CParkingAlterDlg::OnBnClickedWidthDirec() { UpdateData(TRUE); } void CParkingAlterDlg::OnBnClickedDeptDirec() { UpdateData(TRUE); } void CParkingAlterDlg::OnBnClickedTextLoc() { UpdateData(TRUE); }