#include "stdafx.h" #include "JCXCDlg.h" #include "CCSYDlg.h" #include "AecDbEarthWorm.h" #include "KTCADUtilityEx.h" #include "UITools.h" #include "GLJCDlg.h" #include "JcxcXgpdDLG.h" IMPLEMENT_DYNAMIC(CJCXCDlg, CBaseDialog) CJCXCDlg::CJCXCDlg(CWnd* pParent /*=NULL*/) : CBaseDialog(CJCXCDlg::IDD, _T("JCXC"), IDC_STATIC_FRM, pParent) , m_fL(0) , m_fL1(0) , m_fP1(0) , m_fW1(0) , m_fH1(0) , m_fP2(0) , m_fL2(0) , m_fH(0) , m_fG(0) , m_fE(0) , m_fW2(0) , m_fH2(0) , m_fW3(0) , m_fH4(0) , m_iJSKPos1(0) , m_iJSKPos2(0) { } CJCXCDlg::~CJCXCDlg() { } void CJCXCDlg::DoDataExchange(CDataExchange* pDX) { CBaseDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_fL); DDV_MinMaxFloat(pDX, m_fL, 0, 1000); DDX_Text(pDX, IDC_EDIT3, m_fL1); DDV_MinMaxFloat(pDX, m_fL1, 0, 1000); DDX_Text(pDX, IDC_EDIT4, m_fP1); DDV_MinMaxFloat(pDX, m_fP1, 0, 1000); DDX_Text(pDX, IDC_EDIT5, m_fW1); DDV_MinMaxFloat(pDX, m_fW1, 0, 1000); DDX_Text(pDX, IDC_EDIT6, m_fH1); DDV_MinMaxFloat(pDX, m_fH1, 0, 1000); DDX_Text(pDX, IDC_EDIT7, m_fP2); DDV_MinMaxFloat(pDX, m_fP2, 0, 1000); DDX_Text(pDX, IDC_EDIT8, m_fL2); DDV_MinMaxFloat(pDX, m_fL2, 0, 1000); DDX_Text(pDX, IDC_EDIT9, m_fH); DDV_MinMaxFloat(pDX, m_fH, 0, 1000); DDX_Text(pDX, IDC_EDIT14, m_fG); DDV_MinMaxFloat(pDX, m_fG, 0, 1000); DDX_Text(pDX, IDC_EDIT15, m_fE); DDV_MinMaxFloat(pDX, m_fE, 0, 1000); DDX_Text(pDX, IDC_EDIT16, m_fW2); DDV_MinMaxFloat(pDX, m_fW2, 0, 1000); DDX_Text(pDX, IDC_EDIT17, m_fH2); DDV_MinMaxFloat(pDX, m_fH2, 0, 1000); DDX_Text(pDX, IDC_EDIT18, m_fW3); DDV_MinMaxFloat(pDX, m_fW3, 0, 1000); DDX_Text(pDX, IDC_EDIT19, m_fH4); DDV_MinMaxFloat(pDX, m_fH4, 0, 1000); DDX_Radio(pDX, IDC_RADIO1, m_iJSKPos1); DDV_MinMaxInt(pDX, m_iJSKPos1, 0, 3); DDX_Radio(pDX, IDC_RADIO8, m_iJSKPos2); DDV_MinMaxInt(pDX, m_iJSKPos2, 0, 3); DDX_Control(pDX, IDC_LIST1, m_LstCtrl); } BOOL CJCXCDlg::OnInitDialog() { CBaseDialog::OnInitDialog(); m_fL = m_data.fNodeDef[0]; m_fL1 = m_data.fNodeDef[1]; m_fP1 = m_data.fNodeDef[2]; m_fW1 = m_data.fNodeDef[3]; m_fH1 = m_data.fNodeDef[4]; m_fP2 = m_data.fNodeDef[8]; m_fL2 = m_data.fNodeDef[9]; m_fH = m_data.fNodeDef[10]; m_fG = m_data.fNodeDef[11]; m_fE = m_data.fNodeDef[13]; m_iJSKPos1 = (int)m_data.fNodeDef[14]; m_fW2 = m_data.fNodeDef[15]; m_fH2 = m_data.fNodeDef[16]; m_iJSKPos2 = (int)m_data.fNodeDef[17]; m_fW3 = m_data.fNodeDef[18]; m_fH4 = m_data.fNodeDef[19]; InitLstCtrl(); RefreshLstCtrl(); UpdateData(FALSE); return TRUE; } BEGIN_MESSAGE_MAP(CJCXCDlg, CBaseDialog) ON_BN_CLICKED(IDC_BUTTON2, &CJCXCDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON1, &CJCXCDlg::OnBnClickedButton1) ON_BN_CLICKED(IDOK, &CJCXCDlg::OnBnClickedOk) ON_BN_CLICKED(IDCANCEL, &CJCXCDlg::OnBnClickedCancel) ON_BN_CLICKED(IDC_BUTTON4, &CJCXCDlg::OnBnClickedButton4) ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CJCXCDlg::OnNMDblclkList1) END_MESSAGE_MAP() void CJCXCDlg::OnBnClickedButton2() { CCCSYDlg dlg; dlg.SetBmpFileName(_T("xx.bmp")); dlg.DoModal(); } void CJCXCDlg::OnBnClickedButton1() { CCCSYDlg dlg; dlg.SetBmpFileName(_T("jcxc.bmp")); dlg.DoModal(); } void CJCXCDlg::OnBnClickedOk() { UpdateData(TRUE); AecDbEarthWorm worm; worm.SetCrossSectionScr(m_sCrossSectionScr); int count = worm.GetRoomCount(); if (GetIdxOfRoom() != 0 && GetIdxOfRoom() != count - 1) { AfxMessageBox(_T("请选择侧边舱体。")); return; } m_data.fNodeDef[0] = m_fL; m_data.fNodeDef[1] = m_fL1; m_data.fNodeDef[2] = m_fP1; m_data.fNodeDef[3] = m_fW1; m_data.fNodeDef[4] = m_fH1; m_data.fNodeDef[8] = m_fP2; m_data.fNodeDef[9] = m_fL2; m_data.fNodeDef[10] = m_fH; m_data.fNodeDef[11] = m_fG; m_data.fNodeDef[12] = GetIdxOfRoom(); m_data.fNodeDef[13] = m_fE; m_data.fNodeDef[14] = m_iJSKPos1; m_data.fNodeDef[15] = m_fW2; m_data.fNodeDef[16] = m_fH2; m_data.fNodeDef[17] = m_iJSKPos2; m_data.fNodeDef[18] = m_fW3; m_data.fNodeDef[19] = m_fH4; CBaseDialog::OnOK(); if (GetParent() && GetParent()->IsKindOf(RUNTIME_CLASS(CTabCtrl))) ((CGLJCDlg*)(GetParent()->GetParent()))->EndDialog(IDOK); } void CJCXCDlg::OnBnClickedCancel() { CBaseDialog::OnCancel(); if (GetParent() && GetParent()->IsKindOf(RUNTIME_CLASS(CTabCtrl))) ((CGLJCDlg*)(GetParent()->GetParent()))->EndDialog(IDOK); } void CJCXCDlg::OnBnClickedButton4() { POSITION ps = m_LstCtrl.GetFirstSelectedItemPosition(); int nRet = m_LstCtrl.GetNextSelectedItem(ps); if (nRet == -1) { AfxMessageBox(_T("请选择一行数据。")); return; } CString sL = m_LstCtrl.GetItemText(nRet, 1); CString sH = m_LstCtrl.GetItemText(nRet, 2); CString sW1 = m_LstCtrl.GetItemText(nRet, 3); CString sW2 = m_LstCtrl.GetItemText(nRet, 4); CJcxcXgpdDLG dlg; dlg.m_fL = TypeConvert::s2f(sL); dlg.m_fH = TypeConvert::s2f(sH); dlg.m_fW1 = TypeConvert::s2f(sW1); dlg.m_fW2 = TypeConvert::s2f(sW2); dlg.DoModal(); int idx = 20 + 4 * nRet; m_data.fNodeDef[idx++] = AS_MUNITF(dlg.m_fL); m_data.fNodeDef[idx++] = AS_MUNITF(dlg.m_fH); m_data.fNodeDef[idx++] = AS_MUNITF(dlg.m_fW1); m_data.fNodeDef[idx++] = AS_MUNITF(dlg.m_fW2); RefreshLstCtrl(); } void CJCXCDlg::InitLstCtrl() { m_LstCtrl.InsertColumn(0, _T("舱室序号"), LVCFMT_LEFT, 100); m_LstCtrl.InsertColumn(1, _T("距舱室左侧距离(毫米)"), LVCFMT_LEFT, 150); m_LstCtrl.InsertColumn(2, _T("踏步高度(毫米)"), LVCFMT_LEFT, 110); m_LstCtrl.InsertColumn(3, _T("踏步宽度(毫米)"), LVCFMT_LEFT, 110); m_LstCtrl.InsertColumn(4, _T("坡道宽(毫米)"), LVCFMT_LEFT, 100); m_LstCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT); } void CJCXCDlg::RefreshLstCtrl() { m_LstCtrl.DeleteAllItems(); AecDbEarthWorm worm; worm.SetCrossSectionScr(m_sCrossSectionScr); int count = worm.GetRoomCount(); int nRow(0); for (int i = 20, j = 0; i < 20 + 4 * count && i < 64; ++j) { nRow = m_LstCtrl.InsertItem(0, TypeConvert::i2s(j + 1)); m_LstCtrl.SetItemText(nRow, 1, TypeConvert::f2s(AS_M2MM(m_data.fNodeDef[i++]))); m_LstCtrl.SetItemText(nRow, 2, TypeConvert::f2s(AS_M2MM(m_data.fNodeDef[i++]))); m_LstCtrl.SetItemText(nRow, 3, TypeConvert::f2s(AS_M2MM(m_data.fNodeDef[i++]))); m_LstCtrl.SetItemText(nRow, 4, TypeConvert::f2s(AS_M2MM(m_data.fNodeDef[i++]))); } } void CJCXCDlg::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult) { OnBnClickedButton4(); *pResult = 0; }