mrDarker
6 天以前 829fe6c6bc33d53fda9c31fd45a37e1df87befff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#pragma once
#include "afxwin.h"
#include "AlarmManager.h"
#include "Common.h"
#include "ToolUnits.h"
#include "BlButton.h"
 
// 简化版报警弹窗,对接 AlarmManager 的活跃告警
class CAlarmPopupDlg : public CDialogEx
{
    DECLARE_DYNAMIC(CAlarmPopupDlg)
 
public:
    CAlarmPopupDlg(CWnd* pParent = NULL);
    virtual ~CAlarmPopupDlg();
 
public:
    void RefreshContent(); // 刷新当前告警显示
 
private:
    COLORREF m_crBkgnd;
    HBRUSH m_hbrBkgnd;
    CFont m_fontTitle;
    CFont m_fontLevel;
    CFont m_fontName;
    CFont m_fontDescription;
    CBlButton m_btnClose;
    CBlButton m_btnSoundOff;
    CBlButton m_btnAlarmOff;
 
// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_DIALOG_POPUP_ALARM };
#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 OnBnClickedClose();
    afx_msg void OnBnClickedAlarmOff();
    afx_msg void OnBnClickedPrev();
    afx_msg void OnBnClickedNext();
 
private:
    bool m_hasActive;
    AlarmData m_activeAlarm;
    std::vector<AlarmData> m_activeAlarms;
    int m_activeIndex = 0;
    void SetButtonBackgroundColors(bool bMute);
    void ShowNoAlarmControls(bool bShow);
    void ShowAlarmControls(bool bShow);
    void UpdateNavButtons();
    void DisplayActiveAt(int idx);
};