// DialCfgTaskPacket.cpp : implementation file // #include "stdafx.h" #include "geomative.h" #include "DialCfgTaskPacket.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDialCfgTaskPacket dialog extern int g_iUILanguage; CDialCfgTaskPacket::CDialCfgTaskPacket(CWnd* pParent /*=NULL*/) : CDialog(CDialCfgTaskPacket::IDD, pParent) { //{{AFX_DATA_INIT(CDialCfgTaskPacket) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CDialCfgTaskPacket::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDialCfgTaskPacket) DDX_Control(pDX, IDC_LIST_TASK_PACKET, m_listTaskPacket); DDX_Control(pDX, IDC_COMBO_TASK_NAME, m_cmbTaskName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDialCfgTaskPacket, CDialog) //{{AFX_MSG_MAP(CDialCfgTaskPacket) ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd) ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDialCfgTaskPacket message handlers void CDialCfgTaskPacket::OnButtonAdd() { // TODO: Add your control notification handler code here int iCurSel = m_cmbTaskName.GetCurSel(); if (iCurSel < 0) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请先选择任务")); else MessageBoxEx(NULL, _T("Please select task firstly"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } DWORD dwTaskID = m_cmbTaskName.GetItemData(iCurSel); if (IsRepeatTask(dwTaskID)) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("任务已存在")); else MessageBoxEx(NULL, _T("This task has been exist."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } CString strTaskName; m_cmbTaskName.GetLBText(iCurSel, strTaskName); int iCnt = m_listTaskPacket.GetItemCount(); CString strTxt = ""; strTxt.Format(_T("%d"), iCnt+1); m_listTaskPacket.InsertItem(iCnt, ""); m_listTaskPacket.SetItemText(iCnt, 0, strTxt); m_listTaskPacket.SetItemText(iCnt, 1, strTaskName); strTxt.Empty(); strTxt.Format(_T("%d"), dwTaskID); m_listTaskPacket.SetItemText(iCnt, 2, strTxt); } void CDialCfgTaskPacket::OnButtonDel() { // TODO: Add your control notification handler code here int iCurSel = m_listTaskPacket.GetSelectionMark(); if (iCurSel < 0) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请先选择任务")); else MessageBoxEx(NULL, _T("Please select task firstly."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } bool bIsNeedMoidfyIndx = (iCurSel == (m_listTaskPacket.GetItemCount()-1)) ? false : true; m_listTaskPacket.DeleteItem(iCurSel); if (bIsNeedMoidfyIndx) { //修改删除后的后续行的序号 CString strTxt; for (int i = iCurSel; i < m_listTaskPacket.GetItemCount(); i++) { strTxt.Empty(); strTxt.Format(_T("%d"),i+1); m_listTaskPacket.SetItemText(i, 0, strTxt); } } } bool CDialCfgTaskPacket::IsRepeatTask(int iTaskID) { int iCnt = m_listTaskPacket.GetItemCount(); for (int i = 0; i < iCnt; i++) { if (iTaskID == atoi(m_listTaskPacket.GetItemText(i, 2))) { return true; } } return false; } BOOL CDialCfgTaskPacket::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here std::vector vtTdBrowse; vtTdBrowse.clear(); CTaskDataOper dataOper; dataOper.QueryTdBrowseInfo(vtTdBrowse, 1, 0); int iIndex=0; for (int i = 0; i < vtTdBrowse.size(); i++) { iIndex = m_cmbTaskName.AddString(vtTdBrowse[i].strTaskName); if (iIndex < 0) { return FALSE; } m_cmbTaskName.SetItemData(iIndex, vtTdBrowse[i].iTaskID); } // GetDlgItem(IDC_COMBO_TASK_NAME)->EnableWindow(FALSE); // int iLoopTime = 0, iInterval=0; CString strTxt = ""; if (dataOper.QueryTaskPacketAttr(iLoopTime, iInterval, strTxt)) { GetDlgItem(IDC_EDIT_PLCID)->SetWindowText(strTxt); strTxt.Empty(); strTxt.Format(_T("%d"),iLoopTime); GetDlgItem(IDC_EDIT_LOOP_TIMES)->SetWindowText(strTxt); strTxt.Empty(); strTxt.Format(_T("%d"),iInterval); GetDlgItem(IDC_EDIT_INTERVAL_TIME)->SetWindowText(strTxt); } ((CEdit*)GetDlgItem(IDC_EDIT_PLCID))->SetLimitText(10); InitialTaskList(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDialCfgTaskPacket::InitialTaskList() { // TODO: Add extra initialization here CString strColTitle; int iColIndex = 0; m_listTaskPacket.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); m_listTaskPacket.InsertColumn(iColIndex++, _T("Index"),LVCFMT_LEFT,150); m_listTaskPacket.InsertColumn(iColIndex++, _T("TaskName"), LVCFMT_CENTER, 250); m_listTaskPacket.InsertColumn(iColIndex++, _T("TaskID"), LVCFMT_CENTER, 200); std::vector vtTdBrowse; vtTdBrowse.clear(); CTaskDataOper dataOper; dataOper.QueryTaskPacketInfo(vtTdBrowse); int iRowIndex = 0; CString strTxt; for (int i = 0; i GetWindowText(strTxt); int iLoopTime, iInterval; if (!strTxt.IsEmpty()) { iLoopTime = atoi(strTxt); if (iLoopTime < 1 || iLoopTime > 60000) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("循环次数的值必须在1-60000之间")); else MessageBoxEx(NULL, _T("The value of LoopTimes should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } } else { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("循环次数的值必须在1-60000之间")); else MessageBoxEx(NULL, _T("The value of LoopTimes should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } strTxt.Empty(); GetDlgItem(IDC_EDIT_INTERVAL_TIME)->GetWindowText(strTxt); if (!strTxt.IsEmpty()) { iInterval = atoi(strTxt); if (iInterval < 1 || iInterval > 60000) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("时间间隔的值必须在1-60000之间")); else MessageBoxEx(NULL, _T("The value of Interval Time should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } } else { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("时间间隔的值必须在1-60000之间")); else MessageBoxEx(NULL, _T("The value of Interval Time should between 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } strTxt.Empty(); GetDlgItem(IDC_EDIT_PLCID)->GetWindowText(strTxt); if (strTxt.IsEmpty()) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请输入PLC ID")); else MessageBoxEx(NULL, _T("Please input plcid"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } //开始保存 std::vector vtTdBrowse; vtTdBrowse.clear(); for (int i = 0; i < m_listTaskPacket.GetItemCount(); i++) { STTdBrowseInfo stTdInfo; stTdInfo.strTaskName = m_listTaskPacket.GetItemText(i, 1); stTdInfo.iTaskID = atoi(m_listTaskPacket.GetItemText(i,2)); vtTdBrowse.push_back(stTdInfo); } STTaskPacketAttr stPacketAttr; stPacketAttr.iLoopTimes = iLoopTime; stPacketAttr.iInterval = iInterval; stPacketAttr.strPlcID = strTxt; CTaskDataOper dataOper; if (!dataOper.InsertTaskPacketInfo(vtTdBrowse, stPacketAttr)) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("保存失败")); else MessageBoxEx(NULL, _T("Save failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("保存成功")); else MessageBoxEx(NULL, _T("Save success."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); CDialog::OnOK(); }