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