// DialLoopTaskCancel.cpp : 实现文件 // #include "stdafx.h" #include "GeoMative.h" #include "DialLoopTaskCancel.h" #include "afxdialogex.h" extern CGeoMativeApp theApp; extern int g_UIOffset; extern int g_iUILanguage; extern CString Tm2LocalStr(time_t t); // DialLoopTaskCancel 对话框 IMPLEMENT_DYNAMIC(DialLoopTaskCancel, CDialog) DialLoopTaskCancel::DialLoopTaskCancel(CWnd* pParent /*=NULL*/) : CDialog(DialLoopTaskCancel::IDD, pParent) { } DialLoopTaskCancel::~DialLoopTaskCancel() { m_LoopTablelist.RemoveAll(); } void DialLoopTaskCancel::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_LOOP_CANCEL_TABLE, m_ClistLoopTask); DDX_Control(pDX, IDC_STATIC_LOOP_TATOL, m_CStaticTaskNum); } BEGIN_MESSAGE_MAP(DialLoopTaskCancel, CDialog) ON_BN_CLICKED(IDOK_CANCEL_LOOP, &DialLoopTaskCancel::OnBnClickedCancelLoop) ON_BN_CLICKED(IDCANCEL_EXIT, &DialLoopTaskCancel::OnBnClickedExit) END_MESSAGE_MAP() // DialLoopTaskCancel 消息处理程序 void DialLoopTaskCancel::OnBnClickedCancelLoop() { // TODO: 在此添加控件通知处理程序代码 CString szListStr; char ucTaskID[MAX_NAME_LEN] = {0}; char chStr[200]; int iLen = 0; POSITION pos = m_ClistLoopTask.GetFirstSelectedItemPosition(); if (pos == NULL) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请选择一个任务!")); else MessageBoxEx(NULL, _T("Please choose one task first."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } theApp.m_NetWorkOper.SetSuspendForThread(true); while (pos) { int nItem = m_ClistLoopTask.GetNextSelectedItem(pos); szListStr.Empty(); szListStr = m_ClistLoopTask.GetItemText(nItem, 1); strncpy(ucTaskID, szListStr, MAX_NAME_LEN* sizeof(BYTE)); if (!theApp.m_NetWorkOper.SendCtrlMsgDirect(EN_CANCEL_LOOP_TASK_TRUST, 0xFFFFFFFF, 1, (char*)ucTaskID, MAX_NAME_LEN* sizeof(BYTE))) { theApp.m_NetWorkOper.SetSuspendForThread(false); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("取消循环任务发送失败!")); else MessageBoxEx(NULL, _T("Cancel loop task send failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (EN_RECV_SUCCESS == theApp.m_NetWorkOper.RecvMsgDirect(chStr, &iLen, 10, 5000)) { if ((1 > iLen) || (EN_RECV_SUCCESS != chStr[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); CString szMsg; if (LANG_ZHCN == g_iUILanguage) { szMsg.Format(_T("任务 '%s'取消循环失败."), ucTaskID); AfxMessageBox(szMsg); } else { szMsg.Format(_T("Task ID '%s' cancal trust to failed."), ucTaskID); MessageBoxEx(NULL, szMsg, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } return; } } } if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("取消循环任务完成")); else MessageBoxEx(NULL, _T("Cancel loop task finished."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); theApp.m_NetWorkOper.SetSuspendForThread(false); } void DialLoopTaskCancel::OnBnClickedExit() { // TODO: 在此添加控件通知处理程序代码 m_LoopTablelist.RemoveAll(); SendMessage(WM_CLOSE, NULL, NULL); } BOOL DialLoopTaskCancel::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 CString strColTitle; int iColIndex = (int)VAL_ZERO; m_ClistLoopTask.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); m_CStaticTaskNum.SetWindowTextA(_T("0")); strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TDNAME + g_UIOffset); m_ClistLoopTask.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 110); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("任务ID"); } else{ strColTitle += _T("Task ID"); } m_ClistLoopTask.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 250); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("任务类型"); } else{ strColTitle += _T("Task type"); } m_ClistLoopTask.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 80); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("开始时间"); } else{ strColTitle += _T("Start time"); } m_ClistLoopTask.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); iColIndex++; strColTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) { strColTitle += _T("结束时间"); } else{ strColTitle += _T("End time"); } m_ClistLoopTask.InsertColumn(iColIndex, strColTitle, LVCFMT_LEFT, 150); int iIndex = 0; CString szTime; if (0 < m_LoopTablelist.GetCount() && 0 == m_LoopTablelist.IsEmpty()) { POSITION pos = m_LoopTablelist.GetHeadPosition(); while (pos != NULL) { STLoopTaskTable taskTable = m_LoopTablelist.GetNext(pos); m_ClistLoopTask.InsertItem(iIndex, _T("")); m_ClistLoopTask.SetItemText(iIndex, 0, (LPCTSTR)(_bstr_t)taskTable.ucTaskName); m_ClistLoopTask.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)taskTable.ucTaskID); m_ClistLoopTask.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)taskTable.ucLoopType); szTime.Empty(); szTime = Tm2LocalStr(taskTable.uiStartTime); //szTime.Format("%u",taskTable.uiStartTime); m_ClistLoopTask.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)szTime); szTime.Empty(); szTime = Tm2LocalStr(taskTable.uiEndTime); //szTime.Format("%u",taskTable.uiEndTime); m_ClistLoopTask.SetItemText(iIndex, 4, (LPCTSTR)(_bstr_t)szTime); iIndex++; } } CString szTaskNum; szTaskNum.Format(_T("%u"), iIndex); m_CStaticTaskNum.SetWindowTextA(_T(szTaskNum)); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE }