chenluhua1980
2026-01-23 08fc60deca0fa2a0658a676d9dd76e0e69436312
SourceCode/Bond/Servo/CRobotTaskDlg.cpp
@@ -33,6 +33,7 @@
   ON_WM_SIZE()
   ON_WM_ACTIVATE()
   ON_BN_CLICKED(IDC_BUTTON_ABORT_TASK, &CRobotTaskDlg::OnBnClickedAbortTask)
   ON_BN_CLICKED(IDC_BUTTON_RESTORE, &CRobotTaskDlg::OnBnClickedRestore)
END_MESSAGE_MAP()
@@ -51,14 +52,17 @@
   if (m_btnAbortTask.m_hWnd) {
      m_btnAbortTask.ShowWindow(m_pRobotTask ? SW_SHOW : SW_HIDE);
   }
   if (m_btnRestore.m_hWnd) {
      m_btnRestore.ShowWindow(m_pRobotTask ? SW_SHOW : SW_HIDE);
   }
   if (m_pRobotTask != nullptr) {
      using namespace SERVO;
      CEquipment* pSrcEq = theApp.m_model.getMaster().getEquipment(pRobotTask->getSrcPosition());
      CEquipment* pDstEq = theApp.m_model.getMaster().getEquipment(pRobotTask->getTarPosition());
      ROBOT_CMD_PARAM& param = pRobotTask->getRobotCmdParam();
      ROBOT_CMD_PARAM& param = pRobotTask->getRobotCmdParam(ACTION_TRANSFER);
      auto format_time = [](time_t t) -> CString {
         if (t == 0) {
@@ -97,14 +101,16 @@
   CDialogEx::OnInitDialog();
   // TODO:  在此添加额外的初始化
   // 创建“停止任务”按钮
   // 创建“停止任务”按钮和“撤回”按钮
   m_btnAbortTask.Create(_T("停止任务"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(0, 0, 100, 30), this, IDC_BUTTON_ABORT_TASK);
   m_btnRestore.Create(_T("重发指令"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(0, 0, 100, 30), this, IDC_BUTTON_RESTORE);
   // 动态按钮创建后设置字体
   if (m_fontButton.GetSafeHandle() == nullptr) {
      m_fontButton.CreatePointFont(110, _T("微软雅黑")); // 或 "Segoe UI"
   }
   m_btnAbortTask.SetFont(&m_fontButton);
   m_btnRestore.SetFont(&m_fontButton);
   // 设置 LABEL 控件的字体
   if (m_fontDetail.GetSafeHandle() == nullptr) {
@@ -180,15 +186,21 @@
   }
   // 设置“停止任务”按钮位置(右下角)
   const int nBtnWidth = 100;
   const int nBtnHeight = 28;
   const int nMargin = 12;
   const int nMargin2 = 8;
   const int x = rcClient.right - nBtnWidth - nMargin;
   int y = rcClient.bottom - nMargin;
   if (m_btnAbortTask.m_hWnd != nullptr) {
      const int nBtnWidth = 100;
      const int nBtnHeight = 28;
      const int nMargin = 12;
      m_btnAbortTask.MoveWindow(x, y - nBtnHeight, nBtnWidth, nBtnHeight);
      y -= nBtnHeight;
      y -= nMargin2;
   }
      const int nPosX = rcClient.right - nBtnWidth - nMargin;
      const int nPosY = rcClient.bottom - nBtnHeight - nMargin;
      m_btnAbortTask.MoveWindow(nPosX, nPosY, nBtnWidth, nBtnHeight);
   // 设置“停止任务”按钮位置(右下角)
   if (m_btnRestore.m_hWnd != nullptr) {
      m_btnRestore.MoveWindow(x, y - nBtnHeight, nBtnWidth, nBtnHeight);
   }
}
@@ -200,4 +212,15 @@
   }
   theApp.m_model.getMaster().abortCurrentTask();
}
void CRobotTaskDlg::OnBnClickedRestore()
{
   // 回撤任务修改为重发任务
   int ret = AfxMessageBox(_T("确认要重新下发任务吗?"), MB_OKCANCEL | MB_ICONEXCLAMATION);
   if (ret != IDOK) {
      return;
   }
   theApp.m_model.getMaster().resendCurrentTask();
}