// AlarmPopupDlg.cpp : ʵÏÖÎļþ // #include "stdafx.h" #include "BondEq.h" #include "AlarmPopupDlg.h" #include "afxdialogex.h" #include "HorizontalLine.h" #include "AlarmMonitor.h" // CAlarmPopupDlg ¶Ô»°¿ò IMPLEMENT_DYNAMIC(CAlarmPopupDlg, CDialogEx) CAlarmPopupDlg::CAlarmPopupDlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_DIALOG_POPUP_ALARM, pParent) { m_crBkgnd = RGB(225, 225, 225); m_hbrBkgnd = nullptr; m_pActiveAlarm = nullptr; } CAlarmPopupDlg::~CAlarmPopupDlg() { } void CAlarmPopupDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAlarmPopupDlg, CDialogEx) ON_WM_CTLCOLOR() ON_WM_DESTROY() ON_WM_SIZE() ON_BN_CLICKED(IDC_BUTTON_CLOSE, &CAlarmPopupDlg::OnBnClickedButtonClose) END_MESSAGE_MAP() // CAlarmPopupDlg ÏûÏ¢´¦Àí³ÌÐò BOOL CAlarmPopupDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // ×ÖÌå HFONT hFontDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT); LOGFONT lf; ::GetObject(hFontDefault, sizeof(LOGFONT), &lf); lf.lfHeight -= 8; lf.lfWeight = 700; m_fontTitle.CreateFontIndirect(&lf); ::GetObject(hFontDefault, sizeof(LOGFONT), &lf); lf.lfHeight -= 8; m_fontLevel.CreateFontIndirect(&lf); ::GetObject(hFontDefault, sizeof(LOGFONT), &lf); lf.lfHeight -= 16; m_fontName.CreateFontIndirect(&lf); ::GetObject(hFontDefault, sizeof(LOGFONT), &lf); lf.lfHeight -= 8; m_fontDescription.CreateFontIndirect(&lf); GetDlgItem(IDC_LABEL_TITLE)->SetFont(&m_fontTitle); GetDlgItem(IDC_LABEL_LEVEL)->SetFont(&m_fontLevel); GetDlgItem(IDC_LABEL_NAME)->SetFont(&m_fontName); GetDlgItem(IDC_LABEL_DESCRIPTION)->SetFont(&m_fontDescription); // ͼ±ê CString strIcon1; HICON hIcon; CStatic* pStatic; strIcon1.Format(_T("%s\\Res\\Alarm_o_24.ico"), theApp.m_strAppDir); pStatic = (CStatic*)GetDlgItem(IDC_ICON_TITLE); hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), strIcon1, IMAGE_ICON, 24, 24, LR_LOADFROMFILE | LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); pStatic->SetIcon(hIcon); strIcon1.Format(_T("%s\\Res\\Alarm_o_64.ico"), theApp.m_strAppDir); pStatic = (CStatic*)GetDlgItem(IDC_ICON_ALARM); hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), strIcon1, IMAGE_ICON, 64, 64, LR_LOADFROMFILE | LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); pStatic->SetIcon(hIcon); // ¹Ø±Õ°´Å¥ strIcon1.Format(_T("%s\\Res\\close_blcak_24.ico"), theApp.m_strAppDir); pStatic = (CStatic*)GetDlgItem(IDC_ICON_ALARM); hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), strIcon1, IMAGE_ICON, 128, 128, LR_LOADFROMFILE | LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); m_btnClose.SubclassDlgItem(IDC_BUTTON_CLOSE, this); m_btnClose.SetIcon(hIcon, hIcon, 24); // ½â³ý¾¯¸æ°´Å¥ m_btnAlarmOff.SubclassDlgItem(IDC_BUTTON_ALARM_OFF, this); m_btnAlarmOff.SetFrameColor(BS_NORMAL, BTN_ALARM_OFF_FRAME_NORMAL); m_btnAlarmOff.SetFrameColor(BS_HOVER, BTN_ALARM_OFF_FRAME_HOVER); m_btnAlarmOff.SetFrameColor(BS_PRESS, BTN_ALARM_OFF_FRAME_PRESS); m_btnAlarmOff.SetBkgndColor(BS_NORMAL, BTN_ALARM_OFF_BKGND_NORMAL); m_btnAlarmOff.SetBkgndColor(BS_HOVER, BTN_ALARM_OFF_BKGND_HOVER); m_btnAlarmOff.SetBkgndColor(BS_PRESS, BTN_ALARM_OFF_BKGND_PRESS); // ¾²Òô°´Å¥ m_btnSoundOff.SubclassDlgItem(IDC_BUTTON_SOUND_OFF, this); m_btnSoundOff.SetFrameColor(BS_NORMAL, BTN_SOUND_OFF_FRAME_NORMAL); m_btnSoundOff.SetFrameColor(BS_HOVER, BTN_SOUND_OFF_FRAME_HOVER); m_btnSoundOff.SetFrameColor(BS_PRESS, BTN_SOUND_OFF_FRAME_PRESS); m_btnSoundOff.SetBkgndColor(BS_NORMAL, BTN_SOUND_OFF_BKGND_NORMAL); m_btnSoundOff.SetBkgndColor(BS_HOVER, BTN_SOUND_OFF_BKGND_HOVER); m_btnSoundOff.SetBkgndColor(BS_PRESS, BTN_SOUND_OFF_BKGND_PRESS); // ºáÏß1 CHorizontalLine* pLine = CHorizontalLine::Hook(GetDlgItem(IDC_LINE1)->m_hWnd); pLine->SetBkgndColor(RGB(225, 225, 225)); pLine->SetLineColor(RGB(168, 168, 168)); pLine = CHorizontalLine::Hook(GetDlgItem(IDC_LINE2)->m_hWnd); pLine->SetBkgndColor(RGB(225, 225, 225)); pLine->SetLineColor(RGB(168, 168, 168)); return TRUE; // return TRUE unless you set the focus to a control // Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE } HBRUSH CAlarmPopupDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); if (nCtlColor == CTLCOLOR_STATIC) { pDC->SetBkColor(m_crBkgnd); pDC->SetTextColor(RGB(0, 0, 0)); } if (m_hbrBkgnd == nullptr) { m_hbrBkgnd = CreateSolidBrush(m_crBkgnd); } return m_hbrBkgnd; } void CAlarmPopupDlg::OnDestroy() { CDialogEx::OnDestroy(); if (m_hbrBkgnd != nullptr) { ::DeleteObject(m_hbrBkgnd); } if (m_pActiveAlarm != nullptr) { m_pActiveAlarm->release(); m_pActiveAlarm = nullptr; } } void CAlarmPopupDlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); // TODO: ÔÚ´Ë´¦Ìí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂë } void CAlarmPopupDlg::AlarmOn() { ShowFirstAlarm(); } void CAlarmPopupDlg::AlarmOff() { ShowFirstAlarm(); } void CAlarmPopupDlg::OnBnClickedButtonClose() { // OnCancel(); ShowWindow(SW_HIDE); } void CAlarmPopupDlg::ShowFirstAlarm() { // È¡³ö¾¯¸æÐÅÏ¢Ê×Ìõ²¢ÏÔʾ if (m_pActiveAlarm != nullptr) { m_pActiveAlarm->release(); } CString strText; CAlarmMonitor* pAlarmMonitor = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent(ALARM_MONITOR); m_pActiveAlarm = pAlarmMonitor->getActiveAlarm(); if (m_pActiveAlarm != nullptr) { m_pActiveAlarm->addRef(); SetDlgItemText(IDC_LABEL_NAME, pAlarmMonitor->getAlarmText(m_pActiveAlarm->getId())); strText.Format(_T("ID: %d"), m_pActiveAlarm->getId()); SetDlgItemText(IDC_LABEL_LEVEL, strText); ShowWindow(SW_SHOW); } else { ShowWindow(SW_HIDE); } }