LAPTOP-SNT8I5JK\Boounion
2025-09-18 df4d0e875ccfe40add25100a75dedee54e566aaa
SourceCode/Bond/Servo/CControlJobManagerDlg.cpp
@@ -8,6 +8,9 @@
#include "ToolUnits.h"
bool CControlJobManagerDlg::m_bHasState = false;
CControlJobManagerDlg::State CControlJobManagerDlg::m_state{};
// CControlJobManagerDlg 对话框
IMPLEMENT_DYNAMIC(CControlJobManagerDlg, CDialogEx)
@@ -20,15 +23,22 @@
CControlJobManagerDlg::~CControlJobManagerDlg()
{
   for (auto item : m_pjWarps) {
}
void CControlJobManagerDlg::FreeState()
{
   if (!m_bHasState) return;
   for (auto item : m_state.pjWarps) {
      delete (SERVO::CProcessJob*)item.pj;
   }
   m_pjWarps.clear();
   m_state.pjWarps.clear();
   if (m_pControlJob != nullptr) {
      delete m_pControlJob;
      m_pControlJob = nullptr;
   if (m_state.pControlJob != nullptr) {
      delete m_state.pControlJob;
      m_state.pControlJob = nullptr;
   }
   m_bHasState = false;
}
void CControlJobManagerDlg::DoDataExchange(CDataExchange* pDX)
@@ -240,6 +250,7 @@
void CControlJobManagerDlg::OnDestroy()
{
   CDialogEx::OnDestroy();
   SaveState();
   for (auto page : m_pages) {
      page->DestroyWindow();
@@ -249,7 +260,9 @@
void CControlJobManagerDlg::InitData()
{
   ASSERT(m_pControlJob == nullptr);
   LoadState();
   if (m_pControlJob != nullptr) return;
   m_pControlJob = new SERVO::CControlJob("CJ" + CToolUnits::NowStrSec());
   char szBuffer[256];
@@ -292,3 +305,19 @@
      hRoot = m_tree.GetNextSiblingItem(hRoot);
   }
}
void CControlJobManagerDlg::LoadState()
{
   if (!m_bHasState) return;
   // 把 s_state -> 成员变量
   m_pControlJob = m_state.pControlJob;
   m_pjWarps = m_state.pjWarps;
}
void CControlJobManagerDlg::SaveState()
{
   m_state.pControlJob = m_pControlJob;
   m_state.pjWarps = m_pjWarps;
   m_bHasState = true;
}