mrDarker
6 天以前 829fe6c6bc33d53fda9c31fd45a37e1df87befff
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);
};