333 lines
8.9 KiB
C++
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);
|
|
} |