// AnalogPropertyDlg1.cpp : implementation file // #include "stdafx.h" #include "IDE.h" #include "DlgVarStatus.h" #include "StringOperation.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgVarStatus dialog CDlgVarStatus::CDlgVarStatus(CWnd* pParent /*=NULL*/) : CDialog(CDlgVarStatus::IDD, pParent) { //{{AFX_DATA_INIT(CDlgVarStatus) //}}AFX_DATA_INIT m_operation=EDIT; m_DDXFields.SetSize(6); } void CDlgVarStatus::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgVarStatus) //}}AFX_DATA_MAP m_DDXFields.DDX(pDX); } BEGIN_MESSAGE_MAP(CDlgVarStatus, CDialog) //{{AFX_MSG_MAP(CDlgVarStatus) //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BTN_CANCEL, OnBnClickedBtnCancel) ON_BN_CLICKED(IDC_BTN_SAVE, OnBnClickedBtnSave) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgVarStatus message handlers BOOL CDlgVarStatus::OnInitDialog() { CDialog::OnInitDialog(); int i; m_DDXFields.m_pWnd=this; i=0; m_DDXFields.ElementAt(i).Set(_T("id"), IDC_EDT_ID); m_DDXFields.ElementAt(i).m_description=_T("ID"); m_DDXFields.ElementAt(i).m_nDataType = DATA_NUM; i=1; m_DDXFields.ElementAt(i).Set(_T( "devuid" ),IDC_EDT_VAR_UID) ; m_DDXFields.ElementAt(i).m_description=g_strDevUid2; m_DDXFields.ElementAt(i).m_nDataType = DATA_STR; i=2; m_DDXFields.ElementAt(i).Set(_T( "varid" ),IDC_EDT_VAR_ID) ; m_DDXFields.ElementAt(i).m_description=g_strVarID; m_DDXFields.ElementAt(i).m_nDataType = DATA_NUM; i=3; m_DDXFields.ElementAt(i).Set(_T( "statusid" ),IDC_EDT_ALARM_STATUS) ; m_DDXFields.ElementAt(i).m_description=g_strAlarmStatus; m_DDXFields.ElementAt(i).m_nDataType = DATA_NUM; i=4; m_DDXFields.ElementAt(i).Set(_T( "statusdesc" ),IDC_EDT_ALARM_STATUS_DESC) ; m_DDXFields.ElementAt(i).m_description=g_strAlarmStatusDesc; m_DDXFields.ElementAt(i).m_nDataType = DATA_STR; i=5; m_DDXFields.ElementAt(i).Set(_T( "normalstatus" ),IDC_EDT_NORMAL_STATUS_ID) ; m_DDXFields.ElementAt(i).m_description=g_strNormalStatusID; m_DDXFields.ElementAt(i).m_nDataType = DATA_NUM; UpdateData(TRUE); switch (m_operation) { case NEW: break; default: m_DDXFields.ReadData(m_pSet); break; } UpdateData(FALSE); CString str; str.Format("%d", m_nVarID); GetDlgItem(IDC_EDT_VAR_ID)->SetWindowText(str); GetDlgItem(IDC_EDT_VAR_UID)->SetWindowText(m_strUID); if( m_operation == NEW ) { GetDlgItem(IDC_EDT_NORMAL_STATUS_ID)->SetWindowText("0"); } m_btnSave.SubclassDlgItem(IDC_BTN_SAVE, this); m_btnSave.SetBitmaps(IDB_SAVE, RGB(255, 0, 255)); m_btnSave.SetFlat(FALSE); m_btnSave.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnCancel.SubclassDlgItem(IDC_BTN_CANCEL, this); m_btnCancel.SetBitmaps(IDB_DEL, RGB(255, 0, 255)); m_btnCancel.SetFlat(FALSE); m_btnCancel.SetAlign(CButtonST::ST_ALIGN_HORIZ); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDlgVarStatus::OnBnClickedBtnCancel() { // TODO: 在此添加控件通知处理程序代码 OnCancel(); } int CDlgVarStatus::CheckDataValid() { CHAR szID[MAX_ID] = {0}; CString strAlarmStatusID, strAlarmStatusDesc, strNormalStatus; strAlarmStatusID = m_DDXFields.GetAt(3).m_value; strAlarmStatusDesc = m_DDXFields.GetAt(4).m_value; strNormalStatus = m_DDXFields.GetAt(5).m_value; if( !strAlarmStatusID.Compare("") ) { return 1; } if( !strAlarmStatusDesc.Compare("") ) { return 2; } if( !strNormalStatus.Compare("") ) { return 3; } int nRet = CDBInterface::GetInstancePtr()->GetVarStatusID( (char *)(LPCTSTR)m_strUID, m_nVarID, atoi( strAlarmStatusID ), (char *)(LPCTSTR)strAlarmStatusDesc, szID ); if( nRet > 0 ) { return 4; } return 0; } void CDlgVarStatus::OnBnClickedBtnSave() { // TODO: 在此添加控件通知处理程序代码 // 存盘操作 CExString strField; CHAR szMaxID[MAX_ID + 1] = {0}; CHAR strSQLText[MAX_SQL_LENGTH + 1] = {0}; CString s1,s2,s3; GetDlgItem(IDC_EDT_ALARM_STATUS)->GetWindowText( s1 ); GetDlgItem(IDC_EDT_ALARM_STATUS_DESC)->GetWindowText( s2 ); GetDlgItem(IDC_EDT_NORMAL_STATUS_ID)->GetWindowText( s3 ); s1 = s1.Trim(); s2 = s2.Trim(); s3 = s3.Trim(); if( s1.Compare("")==0 || s2.Compare("")==0 || s3.Compare("")==0 ) { MessageBox(g_strInputIsBlank, g_strTip, MB_ICONINFORMATION); return; } CDBInterface::GetInstancePtr()->GetMaxID("t_var_status", "id", szMaxID); int nID; CString strID; try { switch (m_operation) { case EDIT: //nID = atoi(szMaxID); break; default: if( atoi(szMaxID) > 0 ) { nID = atoi(szMaxID) + 1; } else if( atoi(szMaxID) == 0 ) { nID = 1; } strID.Format("%d", nID); GetDlgItem(IDC_EDT_ID)->SetWindowText(strID); //m_pSet->AddNew(); break; } UpdateData(TRUE); try { // 校验数据的正确性 int nRet = CheckDataValid(); if( nRet == 1 ) { MessageBox(g_strAlarmStatusIDCannotEmpty, g_strTip, MB_ICONWARNING); //CDialog::OnOK(); return; } else if( nRet == 2 ) { MessageBox(g_strAlarmStatusDescCannotEmpty, g_strTip, MB_ICONWARNING); //CDialog::OnOK(); return; } else if( nRet == 3 ) { MessageBox(g_strNormalStatusIDCannotBlank, g_strTip, MB_ICONWARNING); //CDialog::OnOK(); return; } else if( nRet == 4 && ( m_operation == NEW || m_operation == COPY ) ) { MessageBox(g_strAlarmStatusInfoExist, g_strTip, MB_ICONWARNING); //CDialog::OnOK(); return; } sprintf(strSQLText, "insert into t_var_status(id, devuid, varid, statusid, statusdesc, normalstatus) values("); if( m_DDXFields.WriteData("t_var_status", strSQLText, m_operation) == -1 ) return; } catch(...) { ; } UpdateData(FALSE); CDialog::OnOK(); }//try catch( _com_error &e ) { CString mes1,mes2,mes3,mes4; mes1.Format(_T("Error:%08lx.\n"), e.Error()); mes2.Format(_T("ErrorMessage:%s.\n"), e.ErrorMessage()); mes3.Format(_T("Source:%s.\n"), (LPCTSTR) _bstr_t(e.Source())); mes4.Format(_T("Description:%s.\n"), (LPCTSTR) _bstr_t(e.Description())); MessageBox(mes1+mes2+mes3+mes4,_T("Invalid field "),MB_ICONERROR); return; } catch(...) { MessageBox(_T("Unhandled Exception"),_T("Invalid field ")+strField,MB_ICONERROR); return; } }