#include "stdafx.h" #include "EditWaterBucketDlg.h" #include "SelectBlkDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //#ifdef _WIN64 #include"TGAs.h" //#endif CEditWaterBucketDlg::CEditWaterBucketDlg(CWnd* pParent /*=NULL*/) : CDialog(CEditWaterBucketDlg::IDD, pParent) { //{{AFX_DATA_INIT(CEditWaterBucketDlg) m_strWndCmbPipeDia = _T(""); m_dWndEdtDeep = 0.0; m_dWndEdtEle = 0.0; m_dWndEdtSize = 0.0; m_dWndEdtQ = 0.0; //}}AFX_DATA_INIT } void CEditWaterBucketDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CEditWaterBucketDlg) DDX_CBString(pDX, IDC_COMBO_PIPEDIA, m_strWndCmbPipeDia); DDX_Text(pDX, IDC_EDIT_DEEP, m_dWndEdtDeep); DDX_Text(pDX, IDC_EDIT_ELE, m_dWndEdtEle); DDX_Text(pDX, IDC_EDIT_SIZE, m_dWndEdtSize); DDX_Text(pDX, IDC_EDIT_Q, m_dWndEdtQ); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CEditWaterBucketDlg, CDialog) //{{AFX_MSG_MAP(CEditWaterBucketDlg) ON_BN_CLICKED(IDC_STATIC_PICTURE, OnStaticPicture) ON_CBN_SELCHANGE(IDC_COMBO_PIPEDIA, OnSelchangeComboPipedia) ON_WM_PAINT() //}}AFX_MSG_MAP END_MESSAGE_MAP() void CEditWaterBucketDlg::OnStaticPicture() { CString csSldName; CString csTK, csRecord; SplitBlkStr(m_csBlkName, csTK, csRecord); csSldName.Format(_T("TWTSYS(%s)"), csRecord); CTemporaryResourceOverride vTemp; CSelectBlkDlg dlg; dlg.m_csTkName = _T("TWTSYS"); dlg.m_csType = _T("虹吸雨水斗"); CWnd *pWnd = GetDlgItem(IDC_STATIC_PICTURE); CRect rect; dlg.m_staticSlide.m_csCurRecord = csSldName; pWnd->GetWindowRect(&rect); dlg.m_ptBase = rect.TopLeft(); if(dlg.DoModal() == IDOK) { CString csRet = dlg.m_staticSlide.m_csCurRecord; XString xsTKName, xsRocord, xsTmp; SplitSlbName(csRet, xsTKName, xsRocord); AcDbDatabase *dwg=acdbCurDwg(); AcAxDocLock docLock(dwg); VERIFY(docLock.lockStatus() == Acad::eOk); if(LoadDwbBlock((const TCHAR*)xsTKName, (const TCHAR*)xsRocord, xsTmp) != RTNORM) return; m_csBlkName = (const TCHAR*)xsTmp; OpenSlide(); } } void CEditWaterBucketDlg::OpenSlide() { UpdateData(TRUE); CWnd *pImageBox1 = GetDlgItem(IDC_STATIC_PICTURE); CString csSldName; CString csTK, csRecord; SplitBlkStr(m_csBlkName, csTK, csRecord); csSldName.Format(_T("TWTSYS(%s)"), csRecord); DrawSlide((const TCHAR*)csSldName, pImageBox1); } BOOL CEditWaterBucketDlg::OnInitDialog() { CDialog::OnInitDialog(); InitCmb(); OnSelchangeComboPipedia(); return TRUE; } void CEditWaterBucketDlg::InitCmb() { XString fullFile; if(!FindFile(_T("datastore.dbf"), fullFile)) { MessageBox(_T("对不起,没有发现datastore.dbf文件!")); return; } CodeBase db; db.read_only = 1; XDbfTable *pTable = db.Open(fullFile); if(!pTable) return; CString strDia, strFlux, strDeep,strNum; std::set setDia; for(pTable->MoveFirst(); !pTable->IsEOF(); pTable->MoveNext()) { GET_FIELD(pTable, _T("Typenumber"), strNum); if (strNum.Compare(_T("45")) != 0) { continue; } GET_FIELD(pTable, _T("Typename"), strDia); GET_FIELD(pTable, _T("Typevalue"), strFlux); GET_FIELD(pTable, _T("Remark"), strDeep); WaterBucketInfo info = {_tstof(strDia), _tstof(strFlux), _tstof(strDeep)}; m_vecData.push_back(info); setDia.insert(_tstof(strDia)); } pTable->Close(); CComboBox *pWnd = (CComboBox*)GetDlgItem(IDC_COMBO_PIPEDIA); if (pWnd != NULL) { pWnd->Clear(); int i = 0; std::set::iterator it; for(it = setDia.begin(); it != setDia.end(); it++) { CString strTemp; strTemp.Format(_T("%.0f"), *it); strTemp = _T("DN") + strTemp; pWnd->InsertString(i, strTemp); ++i; } } UpdateData(FALSE); } void CEditWaterBucketDlg::SetBlkName(const CString& strBlkName) { m_csBlkName = strBlkName; } CString CEditWaterBucketDlg::GetBlkName() { return m_csBlkName; } void CEditWaterBucketDlg::SetPipeDia(double dDia) { CString str; str.Format(_T("%.0f"), dDia); m_strWndCmbPipeDia = _T("DN") + str; } double CEditWaterBucketDlg::GetPipeDia() { m_strWndCmbPipeDia.TrimLeft(_T("DN")); return _tstof(m_strWndCmbPipeDia); } void CEditWaterBucketDlg::SetSize(double dSize) { m_dWndEdtSize = dSize; } double CEditWaterBucketDlg::GetSize() { return m_dWndEdtSize; } void CEditWaterBucketDlg::SetEle(double dEle) { m_dWndEdtEle = dEle; } double CEditWaterBucketDlg::GetEle() { return m_dWndEdtEle; } void CEditWaterBucketDlg::OnSelchangeComboPipedia() { UpdateData(TRUE); m_strWndCmbPipeDia.TrimLeft(_T("DN")); double dDia = _tstof(m_strWndCmbPipeDia); std::vector::iterator it; for(it = m_vecData.begin(); it != m_vecData.end(); it++) { if (fabs((*it).dPipeDia - dDia) < 1e-3) { m_dWndEdtQ = (*it).dFlux; m_dWndEdtDeep = (*it).dDeep; break; } } UpdateData(FALSE); } void CEditWaterBucketDlg::OnPaint() { CPaintDC dc(this); // device context for painting OpenSlide(); }