Files
geomative/GeomativeStudio/cpp/Views/DialUploadLoopTask.cpp
T
coco df489d5640 a
2026-07-03 16:05:30 +08:00

532 lines
19 KiB
C++

// 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;
}