143 lines
3.8 KiB
C++
143 lines
3.8 KiB
C++
#include "stdafx.h"
|
|
#include "FHQDlg.h"
|
|
#include "CCSYDlg.h"
|
|
#include "CoreTools.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CFHQDlg, CBaseDialog)
|
|
|
|
#define CATCH_SECTION _T("CFHQ")
|
|
|
|
CFHQDlg::CFHQDlg(CWnd* pParent /*=NULL*/)
|
|
: CBaseDialog(CFHQDlg::IDD, CATCH_SECTION, -1, pParent)
|
|
, m_fThickness(0)
|
|
, m_fDoorW(0)
|
|
, m_fDoorH(0)
|
|
, m_sDoorNum(_T(""))
|
|
, m_sDoorFactory(_T(""))
|
|
, m_fDoorLeft(0) { }
|
|
|
|
CFHQDlg::~CFHQDlg() { }
|
|
|
|
void CFHQDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CBaseDialog::DoDataExchange(pDX);
|
|
DDX_Text(pDX, IDC_EDIT_THICKNESS, m_fThickness);
|
|
DDV_MinMaxFloat(pDX, m_fThickness, 0.1f, 50000.0f);
|
|
DDX_Text(pDX, IDC_EDIT_DOOR_W, m_fDoorW);
|
|
DDV_MinMaxFloat(pDX, m_fDoorW, 0.1f, 50000.0f);
|
|
DDX_Text(pDX, IDC_EDIT_DOOR_H, m_fDoorH);
|
|
DDV_MinMaxFloat(pDX, m_fDoorH, 0.1f, 50000.0f);
|
|
DDX_CBString(pDX, IDC_COMBO_DOOR_NUM, m_sDoorNum);
|
|
DDX_CBString(pDX, IDC_COMBO_DOOR_FACTORY, m_sDoorFactory);
|
|
DDX_Text(pDX, IDC_EDIT_DOOR_LEFT, m_fDoorLeft);
|
|
DDV_MinMaxFloat(pDX, m_fDoorLeft, 0.1f, 50000.0f);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndRoomCheckList);
|
|
}
|
|
|
|
void CFHQDlg::SetDefaultFnctNode(EWFnctNode &fncNode)
|
|
{
|
|
memset(&fncNode, 0, sizeof(EWFnctNode));
|
|
fncNode.dDistFromPre = 10.0;//AS_MUNIT(dDist);//10米位置
|
|
fncNode.eFnType = kFirwWall;
|
|
_tcscpy(fncNode.szNodeSpec, _T("防火墙:后砖砌墙"));
|
|
fncNode.nRoomIndex = 0;//舱0
|
|
fncNode.fNodeDef[0] = AS_MUNITF(250.0f);//墙厚 //门的定义
|
|
fncNode.fNodeDef[1] = AS_MUNITF(1000.0f);//门宽
|
|
fncNode.fNodeDef[2] = AS_MUNITF(2100.0f);//门高
|
|
fncNode.fNodeDef[3] = AS_MUNITF(600.0f);//位置
|
|
fncNode.fNodeDef[16] = 123.0f;//如 23.0f 为第2,3 舱室加舱室从 1开始
|
|
_tcscpy(fncNode.szNodeDefSpec, _T("甲级钢防火门"));
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CFHQDlg, CBaseDialog)
|
|
ON_BN_CLICKED(IDOK, &CFHQDlg::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_BUTTON_CCSY, &CFHQDlg::OnBnClickedBtnCCSY)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CFHQDlg::OnInitDialog()
|
|
{
|
|
CBaseDialog::OnInitDialog();
|
|
|
|
m_fThickness = AS_M2MM(m_data.fNodeDef[0]);
|
|
m_fDoorW = AS_M2MM(m_data.fNodeDef[1]);
|
|
m_fDoorH = AS_M2MM(m_data.fNodeDef[2]);
|
|
m_fDoorLeft = AS_M2MM(m_data.fNodeDef[3]);
|
|
|
|
std::vector<CString> strs(0);
|
|
CoreTools::SplitString(m_data.szNodeDefSpec, _T("|"), strs);
|
|
if (strs.size() == 2)
|
|
{
|
|
m_sDoorNum = strs[0];
|
|
m_sDoorFactory = strs[1];
|
|
}
|
|
|
|
m_ImageList.Create(IDB_BITMAP4,16,1,RGB(0, 255, 255));
|
|
m_wndRoomCheckList.SetImageList(&m_ImageList,LVSIL_SMALL);
|
|
m_wndRoomCheckList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
|
|
|
|
for (int i = 0;i < m_roomTypes.size();i++)
|
|
{
|
|
m_wndRoomCheckList.InsertColumn(i,m_roomTypes.at(i),LVCFMT_LEFT,80,80);
|
|
m_wndRoomCheckList.SetColumnItemData(i,NULL,ET_Check);
|
|
}
|
|
|
|
m_wndRoomCheckList.InsertItem(0,_T(""));
|
|
for (int i = 0;i < m_roomTypes.size();i++)
|
|
{
|
|
m_wndRoomCheckList.SetItemText(0,i,_T("√"),TRUE);
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CFHQDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_data.fNodeDef[0] = AS_MUNITF(m_fThickness);
|
|
m_data.fNodeDef[1] = AS_MUNITF(m_fDoorW);
|
|
m_data.fNodeDef[2] = AS_MUNITF(m_fDoorH);
|
|
m_data.fNodeDef[3] = AS_MUNITF(m_fDoorLeft);
|
|
|
|
std::vector<CString> strs(0);
|
|
strs.push_back(m_sDoorNum);
|
|
strs.push_back(m_sDoorFactory);
|
|
CString DefSpec = CoreTools::ConnectString(strs, _T("|"));
|
|
::_tcscpy(m_data.szNodeDefSpec, (LPCTSTR)DefSpec);
|
|
|
|
|
|
int nPos = 0;
|
|
CString sRooms = _T(""),sTemp = _T("");
|
|
for (int i = 0;i < m_wndRoomCheckList.GetHeaderCtrl()->GetItemCount();i++)
|
|
{
|
|
BOOL bCheck = m_wndRoomCheckList.GetCheck(0,i);
|
|
if (bCheck)
|
|
{
|
|
nPos = i + 1;
|
|
sTemp.Format(_T("%d"),nPos);
|
|
sRooms += sTemp;
|
|
|
|
}
|
|
}
|
|
|
|
if (sRooms.IsEmpty())
|
|
{
|
|
AfxMessageBox(_T("没有选择要开通风口的舱室!请勾选舱室开通风口"));
|
|
return;
|
|
}
|
|
m_data.fNodeDef[16] = 1.0f * _ttof(sRooms);//新的方式
|
|
|
|
CBaseDialog::OnOK();
|
|
}
|
|
|
|
void CFHQDlg::OnBnClickedBtnCCSY()
|
|
{
|
|
CCCSYDlg dlg;
|
|
|
|
//bmp文件名同命令名,便于后期制作图片
|
|
//如 插防火墙 CFHQ --> CFHQ.bmp
|
|
dlg.SetBmpFileName(_T("FHQ.bmp"));
|
|
dlg.DoModal();
|
|
} |