From d2df50ab05a9d9a85a4b735786fe3f2b6e00186e Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期一, 26 一月 2026 22:19:17 +0800
Subject: [PATCH] 1.已把空指针和防护都补上了:创建消息失败直接返回并删除 action;spooling/发送/序列化都会跳过空消息并记录错误,避免再因 m_pSendMessage 为空导致崩溃或写出坏缓存。

---
 SourceCode/Bond/Servo/PageRecipe.h |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/SourceCode/Bond/Servo/PageRecipe.h b/SourceCode/Bond/Servo/PageRecipe.h
index 6833e3b..1ca4b99 100644
--- a/SourceCode/Bond/Servo/PageRecipe.h
+++ b/SourceCode/Bond/Servo/PageRecipe.h
@@ -2,6 +2,8 @@
 #include "afxdialogex.h"
 #include "RecipeManager.h"
 #include "ListCtrlEx.h"
+#include "MsgDlg.h"
+
 
 // CPageRecipe 瀵硅瘽妗�
 
@@ -13,12 +15,16 @@
 	CPageRecipe(CWnd* pParent = nullptr);   // 鏍囧噯鏋勯�犲嚱鏁�
 	virtual ~CPageRecipe();
 
+public:
+	static UINT SyncThreadFunction(LPVOID lpvData);
+	UINT SyncThreadFunctionInner(CMsgDlg* pMsgDlg);
+
 private:
 	void InitListCtrlHeaderForMaster();
 	void InitListCtrlHeaderForDevice();
 	void UpdateRecipeByPPID(const CString& strPPID);
 	void FillDataToListCtrl(const std::vector<RecipeInfo>& vecRecipe);
-	void FillRecipeListToListCtrl(SERVO::CRecipeList* pList);
+	void FillRecipeListToListCtrl(SERVO::CEquipment* pEq);
 
 // 瀵硅瘽妗嗘暟鎹�
 #ifdef AFX_DESIGN_TIME
@@ -37,10 +43,14 @@
 	afx_msg void OnBnClickedButtonDelete();
 	afx_msg void OnBnClickedButtonDeleteAll();
 	afx_msg void OnBnClickedButtonRefresh();
-	afx_msg void OnLvnItemChangedListPPID(NMHDR* pNMHDR, LRESULT* pResult);
+	afx_msg void OnClickListPPID(NMHDR* pNMHDR, LRESULT* pResult);
+	afx_msg void OnDblclkListPPID(NMHDR* pNMHDR, LRESULT* pResult);
 	afx_msg void OnCbnSelchangeComboEquipment();
+	virtual BOOL PreTranslateMessage(MSG* pMsg);
 	DECLARE_MESSAGE_MAP()
 
 private:
+	std::string SanitizeName(const std::string& name);
+
 	CListCtrlEx m_listPPID;
-};
+};
\ No newline at end of file

--
Gitblit v1.9.3