From 829fe6c6bc33d53fda9c31fd45a37e1df87befff Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 30 一月 2026 11:16:24 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 SourceCode/Bond/Servo/CPanelProduction.h |   64 ++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/Servo/CPanelProduction.h b/SourceCode/Bond/Servo/CPanelProduction.h
new file mode 100644
index 0000000..a4bd705
--- /dev/null
+++ b/SourceCode/Bond/Servo/CPanelProduction.h
@@ -0,0 +1,64 @@
+锘�#pragma once
+#include "BlButton.h"
+#include <afxmt.h>
+#include "AccordionWnd.h"
+#include "ProductionStats.h"
+#include "CPageProdOverview.h"
+#include "CPageCtrlState.h"
+
+// CPanelProduction dialog
+class CPanelProduction : public CDialogEx
+{
+	DECLARE_DYNAMIC(CPanelProduction)
+
+public:
+	CPanelProduction(CWnd* pParent = nullptr);   // standard constructor
+	virtual ~CPanelProduction();
+	int getPanelWidth();
+	void setPanelWidth(int width);
+
+private:
+	COLORREF m_crBkgnd;
+	HBRUSH m_hbrBkgnd;
+	int m_nPanelWidth;
+	CBlButton m_btnClose;
+	HWND m_hPlaceholder;
+	CAccordionWnd* m_pAccordionWnd;
+
+	// Production shift summaries (updated by background thread)
+	ProductionShiftSummary m_daySummary;
+	ProductionShiftSummary m_nightSummary;
+	BOOL m_bShiftSummaryValid;
+	CCriticalSection m_csShiftSummary;
+	CWinThread* m_pStatsThread;
+	CEvent m_evStopStats;
+	CPageProdOverview* m_pPageProdOverview;
+	CPageCtrlState* m_pPageCtrlState;
+
+protected:
+	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
+
+// 瀵硅瘽妗嗘暟鎹�
+#ifdef AFX_DESIGN_TIME
+	enum { IDD = IDD_PANEL_PRODUCTION };
+#endif
+
+	DECLARE_MESSAGE_MAP()
+public:
+	virtual BOOL OnInitDialog();
+	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+	afx_msg void OnDestroy();
+	afx_msg void OnSize(UINT nType, int cx, int cy);
+	afx_msg void OnVLineMoveX(NMHDR* nmhdr, LRESULT* result);
+	afx_msg void OnBnClickedButtonClose();
+
+	// Thread-safe snapshots for UI timer display
+	BOOL TryGetDayNightSummaries(ProductionShiftSummary& outDay, ProductionShiftSummary& outNight);
+
+private:
+	static UINT AFX_CDECL StatsThreadProc(LPVOID pParam);
+	void StartStatsThread();
+	void StopStatsThread();
+public:
+	afx_msg void OnTimer(UINT_PTR nIDEvent);
+};

--
Gitblit v1.9.3