// DialUploadLoopTask.cpp : 实现文件 // #include "stdafx.h" #include "GeoMative.h" #include "DialUploadLoopTask.h" #include "afxdialogex.h" #include "FileOperTools.h" extern CGeoMativeApp theApp; extern int g_UIOffset; extern int g_iUILanguage; extern SYSTEMTIME g_sysCurTime; extern time_t Str2GmtTm(CString szTime); extern int g_iTimeZone; extern CString OnLineLocalTaskState(BYTE ucTaskStats); extern char* G2U(const char* gb2312); // DialUploadLoopTask 对话框 #define MODULE_NAME _T("DialUploadLoopTask") IMPLEMENT_DYNAMIC(DialUploadLoopTask, CNetRequestDialog) DialUploadLoopTask::DialUploadLoopTask(CWnd* pParent /*=NULL*/) : CNetRequestDialog(DialUploadLoopTask::IDD, pParent) { //m_stTaskArglist = stTaskArglist; } DialUploadLoopTask::~DialUploadLoopTask() { } void DialUploadLoopTask::DoDataExchange(CDataExchange* pDX) { CNetRequestDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_LOOP_TASK_ID, m_CStaticLoopID); DDX_Control(pDX, IDC_LIST_LOOP_SUB_LIST, m_CListCtrlTask); DDX_Control(pDX, IDC_EDIT_PLC_ID, m_CEditPlcID); DDX_Control(pDX, IDC_EDIT_GD10_ID, m_CEidtGD20_ID); DDX_Control(pDX, IDC_COMBO1, m_CComBoxLoopType); DDX_Control(pDX, IDC_EDIT_LOOP_COUNT, m_CEditLoopCount); DDX_Control(pDX, IDC_COMBO_LOOP_TIMER, m_CComBoxTimerType); DDX_Control(pDX, IDC_DATETIMEPICKER_LOOP_START, m_CDTCtrlStartTime); DDX_Control(pDX, IDC_DATETIMEPICKER_LOOP_END, m_CDTCtrlEndtime); DDX_Control(pDX, IDC_DATETIMEPICKER_EVERY_TIME, m_CDTCtrlDayStart); DDX_Control(pDX, IDC_DATETIMEPICKER_TASK_SPACK, m_CDTCtrlTaskSpace); DDX_Control(pDX, IDC_STATIC_UPLOAD_LOOP_NUM, m_CStaticTaskNum); DDX_Control(pDX, IDC_EDIT1, m_CEditTaskName); DDX_Control(pDX, IDC_DATETIMEPICKER_START_T, m_CDTTimeStart); DDX_Control(pDX, IDC_DATETIMEPICKER_LOOP_END_T, m_CDTTimeEnd); } BEGIN_MESSAGE_MAP(DialUploadLoopTask, CNetRequestDialog) ON_BN_CLICKED(IDOK_UPLOAD_LOOP, &DialUploadLoopTask::OnBnClickedUploadLoop) ON_BN_CLICKED(IDCANCEL_EXIT_UPLOAD, &DialUploadLoopTask::OnBnClickedExitUpload) ON_CBN_SELCHANGE(IDC_COMBO1, &DialUploadLoopTask::OnCbnSelchangeTimerTypeCombo) ON_MESSAGE(WM_MOVEITEM, DragMoveItem) END_MESSAGE_MAP() // DialUploadLoopTask 消息处理程序 BOOL DialUploadLoopTask::OnInitDialog() { CNetRequestDialog::OnInitDialog(); CString strColTitle; int iColIndex = (int)VAL_ZERO; m_CListCtrlTask.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); CRect rectTask; m_CListCtrlTask.GetClientRect(&rectTask); int iListWidth = rectTask.right - rectTask.left; m_CListCtrlTask.InsertColumn(iColIndex++, strColTitle, LVCFMT_LEFT, 180); if (LANG_ZHCN == g_iUILanguage) { m_CListCtrlTask.InsertColumn(iColIndex++, _T("任务ID"), LVCFMT_LEFT, 300); m_CListCtrlTask.InsertColumn(iColIndex++, _T("任务状态"), LVCFMT_LEFT, iListWidth-480); m_CComBoxLoopType.AddString(_T("次数循环")); m_CComBoxLoopType.AddString(_T("定时循环")); m_CComBoxLoopType.SetCurSel(0); SetWindowTextA(_T("新建定时任务")); GetDlgItem(IDC_STATIC_UPLOAD_LOOP)->SetWindowTextA(_T("子任务数:")); GetDlgItem(IDC_STATIC_LOOP_ID)->SetWindowTextA(_T("循环任务ID:")); GetDlgItem(IDC_STATIC_LOOP_NAME_DIS)->SetWindowTextA(_T("循环任务名:")); GetDlgItem(IDC_STATIC_LOOP_TIMER)->SetWindowTextA(_T("定时类型:")); GetDlgItem(IDC_STATIC_LOOP_START_TIME)->SetWindowTextA(_T("开始时间:")); GetDlgItem(IDC_STATIC_LOOP_END_TIME)->SetWindowTextA(_T("结束时间:")); GetDlgItem(IDC_STATIC_LOOP_TYPE)->SetWindowTextA(_T("循环类型:")); GetDlgItem(IDC_STATIC_STARTOFDAY)->SetWindowTextA(_T("每天开始时间:")); GetDlgItem(IDC_STATIC_LOOP_COUNT)->SetWindowTextA(_T("循环次数:")); GetDlgItem(IDC_STATIC_SUB_TASK_SPACE)->SetWindowTextA(_T("任务间隔:")); GetDlgItem(IDOK_UPLOAD_LOOP)->SetWindowTextA(_T("确定")); GetDlgItem(IDCANCEL_EXIT_UPLOAD)->SetWindowTextA(_T("退出")); } else { m_CComBoxLoopType.AddString(_T("Number of cycles")); m_CComBoxLoopType.AddString(_T("Timing of cycles")); m_CComBoxLoopType.SetCurSel(0); m_CListCtrlTask.InsertColumn(iColIndex++, _T("Task ID"), LVCFMT_LEFT, 300); m_CListCtrlTask.InsertColumn(iColIndex++, _T("Task status"), LVCFMT_LEFT, iListWidth - 480); } int iIndex = 0; CString str; if (0 < m_TaskList.GetCount() && 0 == m_TaskList.IsEmpty()) { POSITION pos = m_TaskList.GetHeadPosition(); while (pos != NULL) { STTaskListItem taskTable = m_TaskList.GetNext(pos); m_CListCtrlTask.InsertItem(iIndex, _T("")); m_CListCtrlTask.SetItemText(iIndex, 0, taskTable.szTDName); m_CListCtrlTask.SetItemText(iIndex, 1, taskTable.szTaskID); m_CListCtrlTask.SetItemText(iIndex, 2, OnLineLocalTaskState(taskTable.eSynStatus)); iIndex++; } } str.Format(_T("%u"), iIndex); m_CStaticTaskNum.SetWindowTextA(str); m_uiSubTaskNum = iIndex; str.Format(_T("PLC%u"), m_dwPLCID); m_CEditPlcID.SetWindowTextA(str); str.Format(_T("SN%u"), m_dwDeviceSN); m_CEidtGD20_ID.SetWindowTextA(str); //loop任务ID m_szLoopID.Format("LOOP%04d%02d%02d%02d%02d%02d_%s", g_sysCurTime.wYear, g_sysCurTime.wMonth, g_sysCurTime.wDay, \ g_sysCurTime.wHour, g_sysCurTime.wMinute, g_sysCurTime.wSecond, str); m_CStaticLoopID.SetWindowTextA(m_szLoopID); m_CDTCtrlStartTime.EnableWindow(FALSE); m_CDTCtrlEndtime.EnableWindow(FALSE); m_CComBoxTimerType.AddString(_T("Once")); m_CComBoxTimerType.AddString(_T("Day")); m_CComBoxTimerType.AddString(_T("Week")); m_CComBoxTimerType.AddString(_T("Month")); m_CComBoxTimerType.SetCurSel(1); m_CComBoxTimerType.EnableWindow(false); m_CDTTimeStart.EnableWindow(false); m_CDTTimeEnd.EnableWindow(false); m_CDTTimeStart.ShowWindow(FALSE); m_CDTTimeEnd.ShowWindow(FALSE); m_CDTCtrlDayStart.SetFormat(_T("HH:mm:ss")); m_CDTCtrlTaskSpace.SetFormat(_T("HH:mm:ss")); //任务时间间隔默认5分钟 CTime time; CTime TDate; time_t tTime; CString strTime; CString strDate; m_CDTCtrlTaskSpace.GetTime(TDate); strDate.Empty(); strDate = TDate.Format("%Y-%m-%d"); //获取到的为日期 如:2010-03-05 strTime.Empty(); strTime = time.Format(" 00:05:00"); strDate += strTime; tTime = Str2GmtTm(strDate); m_CDTCtrlTaskSpace.SetTime(tTime); ((CEdit*)GetDlgItem(IDC_EDIT1))->SetLimitText(20); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void DialUploadLoopTask::OnBnClickedUploadLoop() { // TODO: 在此添加控件通知处理程序代码 UpdateData(true); if (0 >= m_uiSubTaskNum) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("没有子任务")); else MessageBoxEx(NULL, _T("No subtasks"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } CString strLog; STLoopTaskInfo stLoopTaskInfo; char SendStr[2048] = { 0 }; memset(&stLoopTaskInfo, 0, sizeof(stLoopTaskInfo)); //填写参数 if (m_szLoopID.GetLength() <= sizeof(stLoopTaskInfo.ucTaskID)) { memcpy(stLoopTaskInfo.ucTaskID, m_szLoopID, m_szLoopID.GetLength()); } else { memcpy(stLoopTaskInfo.ucTaskID, m_szLoopID, sizeof(stLoopTaskInfo.ucTaskID)); } strLog.Format(_T("[%s][%d]zm:ID=%s m_szLoopID=%s"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTaskID, m_szLoopID); CFileOperTools::GetInstance()->WriteComLog(strLog); CString szTaskName; m_CEditTaskName.GetWindowTextA(szTaskName); if (szTaskName.IsEmpty()) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("任务名称不能为空")); else MessageBoxEx(NULL, _T("Task name cannot be empty"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (szTaskName.GetLength() <= sizeof(stLoopTaskInfo.ucTaskName)) { memcpy(stLoopTaskInfo.ucTaskName, szTaskName, szTaskName.GetLength()); } else { memcpy(stLoopTaskInfo.ucTaskName, szTaskName, sizeof(stLoopTaskInfo.ucTaskName)); } strLog.Format(_T("[%s][%d]zm:loopname=%s szTaskName=%s"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTaskName, szTaskName); CFileOperTools::GetInstance()->WriteComLog(strLog); //stLoopTaskInfo.uiPlcId = g_dwPLCID; //stLoopTaskInfo.uiGD10Id = g_dwDeviceSN; m_CEditPlcID.GetWindowTextA(strLog); strLog = strLog.Mid(strlen("PLC")); stLoopTaskInfo.uiPlcId = atoll(strLog); m_CEidtGD20_ID.GetWindowTextA(strLog); strLog = strLog.Mid(strlen("SN")); stLoopTaskInfo.uiGD10Id = atoll(strLog); strLog.Format(_T("[%s][%d]zm:PLC=%u GD=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiPlcId, stLoopTaskInfo.uiGD10Id); CFileOperTools::GetInstance()->WriteComLog(strLog); int iContrlType = m_CComBoxLoopType.GetCurSel(); stLoopTaskInfo.ucContrlType = (UINT8)iContrlType; strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.ucContrlType=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucContrlType); CFileOperTools::GetInstance()->WriteComLog(strLog); if (m_uiSubTaskNum > 1){ stLoopTaskInfo.ucTimerType = 1; } else { stLoopTaskInfo.ucTimerType = 0; } strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.ucTimerType=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTimerType); CFileOperTools::GetInstance()->WriteComLog(strLog); CString szLoopNum; m_CEditLoopCount.GetWindowTextA(szLoopNum); if (szLoopNum.IsEmpty()) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("循环次数不能为空")); else MessageBoxEx(NULL, _T("Number of cycles cannot be empty"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } stLoopTaskInfo.uiLoopNum = (UINT64)atoi(szLoopNum); if (stLoopTaskInfo.uiLoopNum < 1 || stLoopTaskInfo.uiLoopNum > 60000) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("循环次数范围1-60000")); else MessageBoxEx(NULL, _T("Number of cycles ranges from 1 to 60000"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiLoopNum=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiLoopNum); CFileOperTools::GetInstance()->WriteComLog(strLog); int iLoopType = m_CComBoxTimerType.GetCurSel(); stLoopTaskInfo.ucLoopType = (UINT8)iLoopType; strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.ucLoopType=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucLoopType); CFileOperTools::GetInstance()->WriteComLog(strLog); stLoopTaskInfo.ucTimerAgsNum = 1; //循环定时参数个数 stLoopTaskInfo.ucTimerTimeAgs = 0; //定时时间参数 strLog.Format(_T("[%s][%d]zm:ucTimerAgsNum=%d,stLoopTaskInfo.ucTimerTimeAgs=%d"), MODULE_NAME, __LINE__, stLoopTaskInfo.ucTimerAgsNum, stLoopTaskInfo.ucTimerTimeAgs); CFileOperTools::GetInstance()->WriteComLog(strLog); CTime time; CTime TDate; time_t tTime; CString strTime; CString strDate; m_CDTCtrlStartTime.GetTime(TDate); //m_CDTTimeStart.GetTime(time); strDate.Empty(); strDate = TDate.Format("%Y-%m-%d"); //获取到的为日期 如:2010-03-05 strTime.Empty(); strTime = time.Format(" 00:00:00"); strDate += strTime; tTime = Str2GmtTm(strDate); stLoopTaskInfo.uiStartTime = tTime; //开始测试时间 strLog.Format(_T("[%s][%d]zm:strDate=%s,stLoopTaskInfo.uiStartTime=%u"), MODULE_NAME, __LINE__, strDate, stLoopTaskInfo.uiStartTime); CFileOperTools::GetInstance()->WriteComLog(strLog); m_CDTCtrlEndtime.GetTime(TDate); //m_CDTTimeEnd.GetTime(time); strDate.Empty(); strDate = TDate.Format("%Y-%m-%d"); //获取到的为日期 如:2010-03-05 strTime.Empty(); strTime = time.Format(" 23:59:59"); strDate += strTime; tTime = Str2GmtTm(strDate); stLoopTaskInfo.uiEndTime = tTime; //结束测试时间 strLog.Format(_T("[%s][%d]zm:strDate=%s,stLoopTaskInfo.uiStartTime=%u"), MODULE_NAME, __LINE__, strDate, stLoopTaskInfo.uiEndTime); CFileOperTools::GetInstance()->WriteComLog(strLog); if (stLoopTaskInfo.uiEndTime < stLoopTaskInfo.uiStartTime) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("结束时间不能小于开始时间")); else MessageBoxEx(NULL, _T("The end time cann't before the start time!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } m_CDTCtrlDayStart.GetTime(time); int iStartMin = time.GetHour() * 60 + time.GetMinute(); //每天或者每周相对0点开始分钟数 iStartMin = iStartMin - 60*g_iTimeZone; if (iStartMin < 0) { iStartMin += 24 * 60; //格林威治时间是前一天了 } if (iStartMin > 24 * 60) { iStartMin -= 24 * 60; //格林威治时间是后一天了 } stLoopTaskInfo.uiStartMin = iStartMin; strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiStartMin=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiStartMin); CFileOperTools::GetInstance()->WriteComLog(strLog); m_CDTCtrlTaskSpace.GetTime(time); stLoopTaskInfo.uiTaskSpace = time.GetHour() * 60*60 + time.GetMinute()*60+time.GetSecond(); //任务间间隔,已秒为单位 strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiTaskSpace=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiTaskSpace); CFileOperTools::GetInstance()->WriteComLog(strLog); stLoopTaskInfo.uiSubTaskNum = m_uiSubTaskNum;//子任务数 strLog.Format(_T("[%s][%d]zm:stLoopTaskInfo.uiSubTaskNum=%u"), MODULE_NAME, __LINE__, stLoopTaskInfo.uiSubTaskNum); CFileOperTools::GetInstance()->WriteComLog(strLog); /*if (0 == stLoopTaskInfo.ucContrlType) { //stLoopTaskInfo.uiEndTime = stLoopTaskInfo.uiStartTime + 1800;//手动任务结束时间输入无效 }*/ strcpy(stLoopTaskInfo.ucTaskName, G2U(stLoopTaskInfo.ucTaskName)); stLoopTaskInfo.uiLoopNum = htons(stLoopTaskInfo.uiLoopNum); stLoopTaskInfo.uiGD10Id = htonl(stLoopTaskInfo.uiGD10Id); stLoopTaskInfo.uiPlcId = htonl(stLoopTaskInfo.uiPlcId); stLoopTaskInfo.uiStartTime = htonl(stLoopTaskInfo.uiStartTime); stLoopTaskInfo.uiEndTime = htonl(stLoopTaskInfo.uiEndTime); stLoopTaskInfo.uiStartMin = htonl(stLoopTaskInfo.uiStartMin); stLoopTaskInfo.uiTaskSpace = htonl(stLoopTaskInfo.uiTaskSpace); stLoopTaskInfo.uiSubTaskNum = htonl(stLoopTaskInfo.uiSubTaskNum); strLog.Format(_T("zm:UploadLoopTask uiLoopNum=%d,uiGD10Id=%u,stLoopTaskInfo.uiPlcId=%u,\nstLoopTaskInfo.uiStartTime=%u,stLoopTaskInfo.uiEndTime=%u,stLoopTaskInfo.uiStartMin=%u,stLoopTaskInfo.uiTaskSpace=%u,stLoopTaskInfo.uiSubTaskNum=%u"), stLoopTaskInfo.uiLoopNum,stLoopTaskInfo.uiGD10Id, stLoopTaskInfo.uiPlcId, stLoopTaskInfo.uiStartTime, stLoopTaskInfo.uiEndTime, stLoopTaskInfo.uiStartMin, stLoopTaskInfo.uiTaskSpace, stLoopTaskInfo.uiSubTaskNum); CFileOperTools::GetInstance()->WriteComLog(strLog); memcpy(SendStr, &stLoopTaskInfo, sizeof(STLoopTaskInfo)); char *TaskStr = &SendStr[sizeof(STLoopTaskInfo)]; //修改为按当前任务列表排序上传 int iTaskCount = m_CListCtrlTask.GetItemCount(); CString strTaskID; char *SubTaskStr = NULL; char szTaskID[MAX_NAME_LEN] = { 0 }; for (int i = 0; i < iTaskCount; i++) { strTaskID = m_CListCtrlTask.GetItemText(i, 1); memset(szTaskID, 0, MAX_NAME_LEN); strcpy(szTaskID, strTaskID); SubTaskStr = &TaskStr[MAX_NAME_LEN*i]; memcpy(SubTaskStr, szTaskID, MAX_NAME_LEN); } theApp.m_NetWorkOper.SetSuspendForThread(true); PostNetRequest(EN_REQ_LOOP_TASK_TRUST, this->m_hWnd, (char*)SendStr, sizeof(STLoopTaskInfo) + m_uiSubTaskNum*(MAX_NAME_LEN* sizeof(BYTE))); theApp.m_NetWorkOper.SetSuspendForThread(false); } void DialUploadLoopTask::OnBnClickedExitUpload() { // TODO: 在此添加控件通知处理程序代码 m_TaskList.RemoveAll(); SendMessage(WM_CLOSE, NULL, NULL); } void DialUploadLoopTask::PreNetResponse(WPARAM wParam, LPARAM lParam) { LPRESPONSEPACKET pResponsePacket = (LPRESPONSEPACKET)lParam; if (pResponsePacket == NULL) { return; } switch (pResponsePacket->clsPacketBase.ucCmd) { case EN_REQ_LOOP_TASK_TRUST: { switch (pResponsePacket->pData[0]) { case FAILED_NO_ERROR: { if (g_iUILanguage == LANG_ZHCN) AfxMessageBox(_T("循环任务创建完成")); else MessageBoxEx(NULL, _T("Trust loop task finished"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); SendMessage(WM_CLOSE, NULL, NULL); } break; case FAILED_CREATE_LOOP_DURING_THIS_PERIOD: { if (g_iUILanguage == LANG_ZHCN) { AfxMessageBox(_T("此时段已创建其他任务")); } else { MessageBoxEx(NULL, _T("Other tasks have been created during this period"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } } break; default: { if ((1 > pResponsePacket->wDataLen) || (FAILED_NO_ERROR != pResponsePacket->pData[0])) { theApp.m_NetWorkOper.SetSuspendForThread(false); CString strMsg; if (g_iUILanguage == LANG_ZHCN) { strMsg.Format(_T("未知错误,失败码%d."), pResponsePacket->pData[0]); AfxMessageBox(strMsg); } else { strMsg.Format(_T("Unknown error, failure code%d."), pResponsePacket->pData[0]); MessageBoxEx(NULL, strMsg, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } return; } } break; } } break; default: break; } } void DialUploadLoopTask::OnCbnSelchangeTimerTypeCombo() { // TODO: 在此添加控件通知处理程序代码 int iCurSel = m_CComBoxLoopType.GetCurSel(); if (iCurSel == 0) { time_t tTime; time(&tTime); CString strDate; tm* pTm = localtime(&tTime); strDate.Format(_T("%d-%d-%d 00:00:00"), pTm->tm_year+1900, pTm->tm_mon+1, pTm->tm_mday); tTime = Str2GmtTm(strDate); m_CDTCtrlEndtime.SetTime(tTime); //结束测试时间 m_CDTCtrlStartTime.EnableWindow(FALSE); m_CDTCtrlEndtime.EnableWindow(FALSE); } else if (iCurSel == 1) { time_t tTime; time(&tTime); CString strDate; tm* pTm = localtime(&tTime); strDate.Format(_T("%d-%d-%d 00:00:00"), pTm->tm_year + 1900, pTm->tm_mon + 1, pTm->tm_mday+3); tTime = Str2GmtTm(strDate); m_CDTCtrlEndtime.SetTime(tTime); //结束测试时间 m_CDTCtrlStartTime.EnableWindow(TRUE); m_CDTCtrlEndtime.EnableWindow(TRUE); } } LRESULT DialUploadLoopTask::DragMoveItem(WPARAM wParam, LPARAM lParam) { int iSelectItem = wParam; int iChangeItem = lParam; if (iSelectItem == -1 || iChangeItem == -1) { return 0; } CString strTaskName = m_CListCtrlTask.GetItemText(iSelectItem, 0); CString strTaskID = m_CListCtrlTask.GetItemText(iSelectItem, 1); CString strTaskSynStatus = m_CListCtrlTask.GetItemText(iSelectItem, 2); if (iSelectItem < iChangeItem) { for (int i = iSelectItem; i <= iChangeItem; i++) { if (i == iChangeItem) { m_CListCtrlTask.SetItemText(iChangeItem, 0, strTaskName); m_CListCtrlTask.SetItemText(iChangeItem, 1, strTaskID); m_CListCtrlTask.SetItemText(iChangeItem, 2, strTaskSynStatus); } else { m_CListCtrlTask.SetItemText(i, 0, m_CListCtrlTask.GetItemText(i + 1, 0)); m_CListCtrlTask.SetItemText(i, 1, m_CListCtrlTask.GetItemText(i + 1, 1)); m_CListCtrlTask.SetItemText(i, 2, m_CListCtrlTask.GetItemText(i + 1, 2)); } } } else { for (int i = iSelectItem; i > iChangeItem; i--) { if (i-1 == iChangeItem) { m_CListCtrlTask.SetItemText(i, 0, strTaskName); m_CListCtrlTask.SetItemText(i, 1, strTaskID); m_CListCtrlTask.SetItemText(i, 2, strTaskSynStatus); } else { m_CListCtrlTask.SetItemText(i, 0, m_CListCtrlTask.GetItemText(i - 1, 0)); m_CListCtrlTask.SetItemText(i, 1, m_CListCtrlTask.GetItemText(i - 1, 1)); m_CListCtrlTask.SetItemText(i, 2, m_CListCtrlTask.GetItemText(i - 1, 2)); } } } return 0; }