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