Files
envi-code/SourceCode/Code2026/EarthWormCmd/FHQDlg.cpp
T
2026-09-28 15:28:50 +08:00

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();
}