#pragma once
|
#include "BlButton.h"
|
#include <afxmt.h>
|
|
#include "ProductionStats.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;
|
|
// Production shift summary (updated by background thread)
|
ProductionShiftSummary m_shiftSummary;
|
BOOL m_bShiftSummaryValid;
|
CCriticalSection m_csShiftSummary;
|
CWinThread* m_pStatsThread;
|
CEvent m_evStopStats;
|
|
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 snapshot for UI timer display
|
BOOL TryGetShiftSummary(ProductionShiftSummary& outSummary);
|
|
private:
|
static UINT AFX_CDECL StatsThreadProc(LPVOID pParam);
|
void StartStatsThread();
|
void StopStatsThread();
|
public:
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
};
|