#pragma once #include "afxdialogex.h" #include "BlButton.h" // BUTTON控件 #define BTN_MAX 7 #define BTN_RUN 0 #define BTN_AUTO 1 #define BTN_PUASE 2 #define BTN_MANUAL 3 #define BTN_MUTE 4 #define BTN_OPR 5 #define BTN_STOP 6 // CProjectPageMain 对话框 enum class OperationType { RUN = 0, // 启动 AUTO, // 自动 PUASE, // 暂停 MANUAL, // 手动 MUTE, // 静音 OPR, // 复位 STOP // 停止 }; class CProjectPageMain : public CDialogEx { DECLARE_DYNAMIC(CProjectPageMain) public: CProjectPageMain(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CProjectPageMain(); public: void SetPLC(CPLC* pPLC); private: void InitRxWindows(); void SetButtonBackgroundColors(CBlButton* btn, bool bOff); void HandleOperation(OperationType eOpType); void WriteOperationDataToPLC(OperationType eOpType, bool bPressed); private: COLORREF m_crBkgnd; HBRUSH m_hbrBkgnd; IObserver* m_pObserver; CPLC* m_pPLC; private: // 控件 CBlButton* m_pBlBtns[BTN_MAX]; // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_PROJECT_PAGE_MAIN }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 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 OnTimer(UINT_PTR nIDEvent); afx_msg void OnClose(); afx_msg void OnBnClickedButtonActivate(); afx_msg void OnBnClickedButtonAuto(); afx_msg void OnBnClickedButtonPuase(); afx_msg void OnBnClickedButtonManualOperation(); afx_msg void OnBnClickedButtonSoundOff(); afx_msg void OnBnClickedButtonResetting(); afx_msg void OnBnClickedButtonStop(); afx_msg LRESULT OnUpdateDataToUI(WPARAM wParam, LPARAM lParam); };