Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/ParkingAlterDlg.cpp
T
2026-09-28 15:28:50 +08:00

333 lines
8.9 KiB
C++

// 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<CString>& subStr)
{
CString str = _T("");
CString strTemp = _T("");
std::vector<CString>::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<CString> &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<CString>使用 DIVSTRING 为分隔符
std::vector<CString> 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<CString> 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);
}