From df4d0e875ccfe40add25100a75dedee54e566aaa Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 18 九月 2025 09:06:24 +0800
Subject: [PATCH] 1.CConrolJobManagerDlg临时数据存储。
---
SourceCode/Bond/Servo/Servo.cpp | 2 ++
SourceCode/Bond/Servo/CControlJobManagerDlg.h | 10 ++++++++++
SourceCode/Bond/Servo/CControlJobManagerDlg.cpp | 41 +++++++++++++++++++++++++++++++++++------
3 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/SourceCode/Bond/Servo/CControlJobManagerDlg.cpp b/SourceCode/Bond/Servo/CControlJobManagerDlg.cpp
index 6676d30..e9b9479 100644
--- a/SourceCode/Bond/Servo/CControlJobManagerDlg.cpp
+++ b/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;
+}
diff --git a/SourceCode/Bond/Servo/CControlJobManagerDlg.h b/SourceCode/Bond/Servo/CControlJobManagerDlg.h
index c43d941..1df9313 100644
--- a/SourceCode/Bond/Servo/CControlJobManagerDlg.h
+++ b/SourceCode/Bond/Servo/CControlJobManagerDlg.h
@@ -14,6 +14,7 @@
public:
CControlJobManagerDlg(CWnd* pParent = nullptr); // 鏍囧噯鏋勯�犲嚱鏁�
virtual ~CControlJobManagerDlg();
+ static void FreeState();
private:
void Resize();
@@ -23,6 +24,8 @@
bool RemovePorcessJob(SERVO::CProcessJob* pj);
void UpProcessJobId(PJWarp* pjWarp);
void InitData();
+ void LoadState();
+ void SaveState();
private:
std::vector<CCjPageBase*> m_pages;
@@ -30,6 +33,13 @@
std::vector<PJWarp> m_pjWarps;
CApredTreeCtrl2 m_tree;
+public:
+ struct State {
+ SERVO::CControlJob* pControlJob = nullptr;
+ std::vector<PJWarp> pjWarps;
+ };
+ static bool m_bHasState;
+ static State m_state;
// 瀵硅瘽妗嗘暟鎹�
#ifdef AFX_DESIGN_TIME
diff --git a/SourceCode/Bond/Servo/Servo.cpp b/SourceCode/Bond/Servo/Servo.cpp
index be05f20..33f8657 100644
--- a/SourceCode/Bond/Servo/Servo.cpp
+++ b/SourceCode/Bond/Servo/Servo.cpp
@@ -16,6 +16,7 @@
#include "EqsGraphWnd.h"
#include "MapPosWnd.h"
#include "HmTab.h"
+#include "CControlJobManagerDlg.h"
// 声明全局变量,用于管理 GDI+ 初始化
@@ -226,6 +227,7 @@
int CServoApp::ExitInstance()
{
+ CControlJobManagerDlg::FreeState();
m_model.term();
HSMS_Term();
RX_Term();
--
Gitblit v1.9.3