425 lines
11 KiB
C++
425 lines
11 KiB
C++
// DistFloorDlg.cpp : implementation file
|
||||
|
|
//
|
|||
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
#include "DistFloorDlg.h"
|
|||
|
|
|
|||
|
|
//#include <cbclass.h>
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
#define new DEBUG_NEW
|
|||
|
|
#undef THIS_FILE
|
|||
|
|
static char THIS_FILE[] = __FILE__;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// CDistFloorDlg dialog
|
|||
|
|
|
|||
|
|
|
|||
|
|
int ISetPipeMatDnType()
|
|||
|
|
{
|
|||
|
|
CTemporaryResourceOverride vTemp;
|
|||
|
|
CDistFloorDlg dlg;
|
|||
|
|
dlg.m_iMode = 2;
|
|||
|
|
if(dlg.DoModal() != IDOK)
|
|||
|
|
return RTNORM;
|
|||
|
|
return RTNORM;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
double CDistFloorDlg::m_dBaseEle = 0.0;
|
|||
|
|
double CDistFloorDlg::m_dFloorHeight = 0.0;
|
|||
|
|
|
|||
|
|
CDistFloorDlg::CDistFloorDlg(CWnd* pParent /*=NULL*/)
|
|||
|
|
: CDialog(CDistFloorDlg::IDD, pParent)
|
|||
|
|
{
|
|||
|
|
//{{AFX_DATA_INIT(CDistFloorDlg)
|
|||
|
|
m_nHeight = 0.0;
|
|||
|
|
m_csDn = _T("");
|
|||
|
|
// m_iSubNum = 0;
|
|||
|
|
//}}AFX_DATA_INIT
|
|||
|
|
m_iMode = 0;
|
|||
|
|
|
|||
|
|
m_sFloorName = _T("1楼");
|
|||
|
|
m_sBaseEle = _T("±0");
|
|||
|
|
m_sFloorPostfixName = _T("层"); //楼层名后缀,1F 1层 1楼(缺省为"层")
|
|||
|
|
m_iFirstFloor = 1;
|
|||
|
|
m_sBasementName = _T("");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CDistFloorDlg::DoDataExchange(CDataExchange* pDX)
|
|||
|
|
{
|
|||
|
|
CDialog::DoDataExchange(pDX);
|
|||
|
|
//{{AFX_DATA_MAP(CDistFloorDlg)
|
|||
|
|
DDX_Control(pDX, IDC_LIST_FLOOR, m_listCtrl);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_HEIGHT, m_nHeight);
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_DN, m_csDn);
|
|||
|
|
// DDX_Text(pDX, IDC_EDIT_SUB, m_iSubNum);
|
|||
|
|
//}}AFX_DATA_MAP
|
|||
|
|
|
|||
|
|
//zxl 2011.10.20 add
|
|||
|
|
DDX_Text(pDX, IDC_EDIT_BASEELE, m_sBaseEle);
|
|||
|
|
DDX_Text(pDX, IDC_CMB_SFLOOR, m_sFloorName);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
BEGIN_MESSAGE_MAP(CDistFloorDlg, CDialog)
|
|||
|
|
//{{AFX_MSG_MAP(CDistFloorDlg)
|
|||
|
|
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_FLOOR, OnItemchangedListFloor)
|
|||
|
|
ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)
|
|||
|
|
ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
|
|||
|
|
ON_CBN_KILLFOCUS(IDC_CMB_SFLOOR, OnKillfocusCmbSfloor)
|
|||
|
|
//}}AFX_MSG_MAP
|
|||
|
|
|
|||
|
|
END_MESSAGE_MAP()
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// CDistFloorDlg message handlers
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
BOOL CDistFloorDlg::OnInitDialog()
|
|||
|
|
{
|
|||
|
|
CDialog::OnInitDialog();
|
|||
|
|
if(m_iMode == 1){
|
|||
|
|
CWnd *pWnd1 = GetDlgItem(IDC_STATIC_TEXT);
|
|||
|
|
CWnd *pWnd2 = GetDlgItem(IDC_BUTTON_MODIFY);
|
|||
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_DN);
|
|||
|
|
SetWindowText(_T("定义各楼层总当量"));
|
|||
|
|
pWnd1->SetWindowText(_T("总当量"));
|
|||
|
|
pWnd2->SetWindowText(_T("修改当量值"));
|
|||
|
|
pWnd3->ShowWindow(SW_HIDE);
|
|||
|
|
}
|
|||
|
|
else if(m_iMode == 2){
|
|||
|
|
CWnd *pWnd1 = GetDlgItem(IDC_STATIC_TEXT);
|
|||
|
|
CWnd *pWnd2 = GetDlgItem(IDC_BUTTON_MODIFY);
|
|||
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_HEIGHT);
|
|||
|
|
CWnd *pWnd4 = GetDlgItem(IDC_BUTTON_LAST);
|
|||
|
|
// CWnd *pWnd5 = GetDlgItem(IDC_EDIT_SUB);
|
|||
|
|
// CWnd *pWnd6 = GetDlgItem(IDC_STATIC_SUB);
|
|||
|
|
|
|||
|
|
//管材规格 对话框调整 zxl 2011.11.22 add
|
|||
|
|
CWnd *pWnd5 = GetDlgItem(IDC_STATIC_START);
|
|||
|
|
CWnd *pWnd6 = GetDlgItem(IDC_CMB_SFLOOR);
|
|||
|
|
CWnd *pWnd7 = GetDlgItem(IDC_STATIC_HEIGHT);
|
|||
|
|
CWnd *pWnd8 = GetDlgItem(IDC_EDIT_BASEELE);
|
|||
|
|
|
|||
|
|
SetWindowText(_T("定义各管材标注前缀"));
|
|||
|
|
pWnd1->SetWindowText(_T("标注类型"));
|
|||
|
|
pWnd2->SetWindowText(_T("修改类型"));
|
|||
|
|
pWnd3->ShowWindow(SW_HIDE);
|
|||
|
|
pWnd4->ShowWindow(SW_HIDE);
|
|||
|
|
|
|||
|
|
//管材规格 对话框调整 zxl 2011.11.22 add
|
|||
|
|
pWnd5->ShowWindow(SW_HIDE);
|
|||
|
|
pWnd6->ShowWindow(SW_HIDE);
|
|||
|
|
pWnd7->ShowWindow(SW_HIDE);
|
|||
|
|
pWnd8->ShowWindow(SW_HIDE);
|
|||
|
|
}
|
|||
|
|
else if(m_iMode == 0){
|
|||
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_DN);
|
|||
|
|
pWnd3->ShowWindow(SW_HIDE);
|
|||
|
|
}
|
|||
|
|
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
|
|||
|
|
if(m_iMode == 2)
|
|||
|
|
m_listCtrl.InsertColumn ( 0, _T("管材"), LVCFMT_LEFT, 120 );
|
|||
|
|
else
|
|||
|
|
m_listCtrl.InsertColumn ( 0, _T("楼层名"), LVCFMT_LEFT, 80 );
|
|||
|
|
if(m_iMode == 1)
|
|||
|
|
m_listCtrl.InsertColumn ( 1, _T("总当量"), LVCFMT_CENTER, 80 );
|
|||
|
|
else if(m_iMode == 0)
|
|||
|
|
m_listCtrl.InsertColumn ( 1, _T("楼层高"), LVCFMT_CENTER, 80 );
|
|||
|
|
else if(m_iMode == 2)
|
|||
|
|
m_listCtrl.InsertColumn ( 1, _T("标注"), LVCFMT_CENTER, 40 );
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(m_iMode == 2){
|
|||
|
|
GetPipeMaterialList(m_lstName);
|
|||
|
|
for(int m=0;m<m_lstName.Length();m++){
|
|||
|
|
CString csName = m_lstName[m];
|
|||
|
|
CString csHeight = GetDnByMat(csName);
|
|||
|
|
m_lstHeight.Append(tstrnew(csHeight));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_sFloorHeight = m_lstHeight[0];//获取初始化时楼层的高度 zxl 2011.10.24 add
|
|||
|
|
m_dFloorHeight = _tstof(m_lstHeight[0]);
|
|||
|
|
|
|||
|
|
for(int i=0;i<m_lstName.Length();i++){
|
|||
|
|
CString csName = m_lstName[i];
|
|||
|
|
CString csHeight = m_lstHeight[i];
|
|||
|
|
m_listCtrl.InsertItem(i, LPSTR_TEXTCALLBACK);
|
|||
|
|
m_listCtrl.SetItemText(i, 0, csName);
|
|||
|
|
m_listCtrl.SetItemText(i, 1, csHeight);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|||
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDistFloorDlg::OnItemchangedListFloor(NMHDR* pNMHDR, LRESULT* pResult)
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);//zxl 2011.10.20 add
|
|||
|
|
|
|||
|
|
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
|
|||
|
|
POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
|
|||
|
|
if(!pos)
|
|||
|
|
return;
|
|||
|
|
int nItem = m_listCtrl.GetNextSelectedItem(pos);
|
|||
|
|
CString csNum = m_listCtrl.GetItemText(nItem, 1);
|
|||
|
|
if(m_iMode == 2)
|
|||
|
|
m_csDn = csNum;
|
|||
|
|
else
|
|||
|
|
m_nHeight = _tstof(csNum);
|
|||
|
|
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
*pResult = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDistFloorDlg::OnButtonModify()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
CString csNum;
|
|||
|
|
csNum.Format(_T("%.2f"), m_nHeight);
|
|||
|
|
POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
|
|||
|
|
if(!pos)
|
|||
|
|
return;
|
|||
|
|
while(pos){
|
|||
|
|
int nItem = m_listCtrl.GetNextSelectedItem(pos);
|
|||
|
|
if(m_iMode == 2)
|
|||
|
|
m_listCtrl.SetItemText(nItem, 1, m_csDn);
|
|||
|
|
else
|
|||
|
|
m_listCtrl.SetItemText(nItem, 1, csNum);
|
|||
|
|
}
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool CDistFloorDlg::CheckFirstFloor()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
//得到后缀
|
|||
|
|
if(m_sFloorName.Find(_T("F")) > -1)
|
|||
|
|
{
|
|||
|
|
m_sFloorPostfixName = _T("F");
|
|||
|
|
}
|
|||
|
|
else if(m_sFloorName.Find(_T("楼")) > -1)
|
|||
|
|
{
|
|||
|
|
m_sFloorPostfixName = _T("楼");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
m_sFloorPostfixName = _T("层");
|
|||
|
|
}
|
|||
|
|
int iIndex = -1;
|
|||
|
|
//得到前缀
|
|||
|
|
if(m_sFloorName.Find(_T("-")) > -1)
|
|||
|
|
{
|
|||
|
|
iIndex = m_sFloorName.Find(_T("-"));
|
|||
|
|
m_sBasementName = _T("-");
|
|||
|
|
}
|
|||
|
|
else if(m_sFloorName.Find(_T("地下")) > -1)
|
|||
|
|
{
|
|||
|
|
iIndex = m_sFloorName.Find(_T("地下"));
|
|||
|
|
m_sBasementName = _T("地下");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CString sFloor;
|
|||
|
|
for (int j = 0; j < m_sFloorName.GetLength(); j++)
|
|||
|
|
{
|
|||
|
|
CString csTemp = m_sFloorName.Mid(j, 1);
|
|||
|
|
if (!csTemp.IsEmpty())
|
|||
|
|
{
|
|||
|
|
TCHAR ch(csTemp[0]);
|
|||
|
|
if (ch >= '0' && ch <= '9')
|
|||
|
|
{
|
|||
|
|
sFloor += csTemp;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
m_iFirstFloor = _ttoi(sFloor);
|
|||
|
|
|
|||
|
|
if (iIndex > -1)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDistFloorDlg::OnOK()
|
|||
|
|
{
|
|||
|
|
UpdateData(TRUE);
|
|||
|
|
|
|||
|
|
m_lstName.Reset();
|
|||
|
|
m_lstHeight.Reset();
|
|||
|
|
TCHAR strTmpPath[256] = _T("");
|
|||
|
|
GetTempPath(255, strTmpPath);
|
|||
|
|
_tcscat(strTmpPath, _T("floor.his"));
|
|||
|
|
|
|||
|
|
FILE *fp = fopen(_AS(strTmpPath), "w");
|
|||
|
|
if(!fp)
|
|||
|
|
return;
|
|||
|
|
for(int i=0;i<m_listCtrl.GetItemCount();i++){
|
|||
|
|
CString csTmp1, csTmp2;
|
|||
|
|
csTmp1 = m_listCtrl.GetItemText(i, 0);
|
|||
|
|
csTmp2 = m_listCtrl.GetItemText(i, 1);
|
|||
|
|
m_lstName.Append(tstrnew(csTmp1));
|
|||
|
|
m_lstHeight.Append(tstrnew(csTmp2));
|
|||
|
|
if(m_iMode == 2){
|
|||
|
|
SetDnByMat((const TCHAR*)csTmp1, (const TCHAR*)csTmp2);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
CString csTmp3 = csTmp1+_T("-")+csTmp2+_T("\n");
|
|||
|
|
fputs(_AS(csTmp3), fp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
fclose(fp);
|
|||
|
|
|
|||
|
|
//设置起始楼层标高 zxl 2011.10.24 add
|
|||
|
|
double dBaseEle = _tstof(m_sBaseEle);
|
|||
|
|
if (CheckFirstFloor())
|
|||
|
|
{
|
|||
|
|
dBaseEle += (m_iFirstFloor - 1) * _tstof(m_sFloorHeight);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (m_iFirstFloor > m_lstHeight.Length())
|
|||
|
|
{
|
|||
|
|
dBaseEle -= (m_iFirstFloor - m_lstHeight.Length()) * _tstof(m_sFloorHeight);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
m_sStartBaseEle.Format(_T("%.3f"), dBaseEle);
|
|||
|
|
|
|||
|
|
m_dBaseEle = _tstof(m_sBaseEle);//记忆最后一次基准标高 zxl 2011.10.20 add
|
|||
|
|
|
|||
|
|
CDialog::OnOK();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDistFloorDlg::OnButtonLast()
|
|||
|
|
{
|
|||
|
|
XStringList lstHis;
|
|||
|
|
TCHAR strTmpPath[100] = _T("");
|
|||
|
|
GetTempPath(100, strTmpPath);
|
|||
|
|
_tcscat(strTmpPath, _T("floor.his"));
|
|||
|
|
|
|||
|
|
FILE *fp=fopen(_AS(strTmpPath), "r");
|
|||
|
|
if(!fp)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
while(!feof(fp)) {
|
|||
|
|
char sBuf[256]="";
|
|||
|
|
fgets(sBuf, 255, fp);
|
|||
|
|
CString csTmp = sBuf;
|
|||
|
|
csTmp.TrimRight();
|
|||
|
|
if(csTmp != _T(""))
|
|||
|
|
lstHis.Append(tstrnew(csTmp));
|
|||
|
|
}
|
|||
|
|
fclose(fp);
|
|||
|
|
|
|||
|
|
|
|||
|
|
int len = lstHis.Length();
|
|||
|
|
if(len < 1)
|
|||
|
|
return;
|
|||
|
|
m_listCtrl.DeleteAllItems();
|
|||
|
|
|
|||
|
|
for(int i=0;i<len;i++){
|
|||
|
|
CString csTmp = lstHis[i];
|
|||
|
|
int idx = csTmp.Find(_T("-"));
|
|||
|
|
CString csName = csTmp.Left(idx);
|
|||
|
|
int iCharLen = (int)_tcslen(_T("-"));
|
|||
|
|
CString csHeight = csTmp.Right(csTmp.GetLength() - idx - iCharLen);
|
|||
|
|
m_listCtrl.InsertItem(i, LPSTR_TEXTCALLBACK);
|
|||
|
|
m_listCtrl.SetItemText(i, 0, csName);
|
|||
|
|
m_listCtrl.SetItemText(i, 1, csHeight);
|
|||
|
|
|
|||
|
|
//恢复上次的起始楼层和基准标高 zxl 2011.10.20 add
|
|||
|
|
if (i == 0)
|
|||
|
|
{
|
|||
|
|
m_sFloorName = csName;
|
|||
|
|
m_sFloorHeight.Format(_T("%.2f"), m_dFloorHeight);//恢复上次初始化时楼层的高度 zxl 2011.10.24 add
|
|||
|
|
m_sBaseEle = _T("");
|
|||
|
|
m_sBaseEle.Format(_T("%0.3f"), m_dBaseEle);
|
|||
|
|
UpdateData(FALSE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//添加定义起始楼层 zxl 2011.10.20 modify
|
|||
|
|
// void CDistFloorDlg::OnKillfocusEditSub()
|
|||
|
|
// {
|
|||
|
|
// int iOld = m_iSubNum;
|
|||
|
|
// UpdateData(TRUE);
|
|||
|
|
// if(iOld != m_iSubNum){
|
|||
|
|
// if(m_iSubNum >= m_lstName.Length()){
|
|||
|
|
// m_iSubNum = iOld;
|
|||
|
|
// UpdateData(FALSE);
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// m_lstName.Reset();
|
|||
|
|
// m_listCtrl.DeleteAllItems();
|
|||
|
|
// for(int i=0;i<m_iSubNum;i++){
|
|||
|
|
// CString csTmp;
|
|||
|
|
// csTmp.Format(_T("地下%d楼"), m_iSubNum-i);
|
|||
|
|
// m_lstName.Append(tstrnew(csTmp));
|
|||
|
|
// }
|
|||
|
|
// for(i=0;i<m_lstHeight.Length()-m_iSubNum;i++){
|
|||
|
|
// CString csTmp;
|
|||
|
|
// csTmp.Format(_T("%d楼"), i+1);
|
|||
|
|
// m_lstName.Append(tstrnew(csTmp));
|
|||
|
|
// }
|
|||
|
|
// for(i=0;i<m_lstName.Length();i++){
|
|||
|
|
// CString csName = m_lstName[i];
|
|||
|
|
// CString csHeight = m_lstHeight[i];
|
|||
|
|
// m_listCtrl.InsertItem(i, LPSTR_TEXTCALLBACK);
|
|||
|
|
// m_listCtrl.SetItemText(i, 0, csName);
|
|||
|
|
// m_listCtrl.SetItemText(i, 1, csHeight);
|
|||
|
|
// }
|
|||
|
|
//
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
void CDistFloorDlg::OnKillfocusCmbSfloor()
|
|||
|
|
{
|
|||
|
|
m_lstName.Reset();
|
|||
|
|
m_listCtrl.DeleteAllItems();
|
|||
|
|
//如果有地下,从地下层开始
|
|||
|
|
if(!CheckFirstFloor())
|
|||
|
|
{
|
|||
|
|
for(int i = 0; i < m_iFirstFloor && i < m_lstHeight.Length(); i++)
|
|||
|
|
{
|
|||
|
|
CString csTmp;
|
|||
|
|
csTmp.Format(_T("%s%d%s"), m_sBasementName, m_iFirstFloor - i, m_sFloorPostfixName);
|
|||
|
|
m_lstName.Append(tstrnew(csTmp));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (m_lstHeight.Length() - m_iFirstFloor > 0)
|
|||
|
|
{
|
|||
|
|
for(int i = 0; i < m_lstHeight.Length() - m_iFirstFloor; i++)
|
|||
|
|
{
|
|||
|
|
CString csTmp;
|
|||
|
|
csTmp.Format(_T("%d%s"), i + 1, m_sFloorPostfixName);
|
|||
|
|
m_lstName.Append(tstrnew(csTmp));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else//地上楼层
|
|||
|
|
{
|
|||
|
|
for(int i = 0; i < m_lstHeight.Length(); i++)
|
|||
|
|
{
|
|||
|
|
CString csTmp;
|
|||
|
|
csTmp.Format(_T("%d%s"), m_iFirstFloor + i, m_sFloorPostfixName);
|
|||
|
|
m_lstName.Append(tstrnew(csTmp));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for(int i = 0;i < m_lstHeight.Length(); i++)
|
|||
|
|
{
|
|||
|
|
CString csName = m_lstName[i];
|
|||
|
|
CString csHeight = m_lstHeight[i];
|
|||
|
|
m_listCtrl.InsertItem(i, LPSTR_TEXTCALLBACK);
|
|||
|
|
m_listCtrl.SetItemText(i, 0, csName);
|
|||
|
|
m_listCtrl.SetItemText(i, 1, csHeight);
|
|||
|
|
}
|
|||
|
|
}
|