| | |
| | | for (auto iter = m_mapAlarming.begin(); iter != m_mapAlarming.end();/* iter++*/) { |
| | | if (!findAlarm(alarmIds, iter->first)) { |
| | | // æ¶é¤è¦å, åæ¶å°ä¿¡æ¯ååºï¼ä»¥ä½¿ç颿¾ç¤ºååå²è®°å½ä¿å |
| | | iter->second->alarmOff(); |
| | | addAlarmToHistoryRecord(iter->second); |
| | | LOGE("æ¶é¤äºè¦å:%s", iter->second->toString().c_str()); |
| | | SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", iter->second)); |
| | | |
| | | iter->second->release(); |
| | | CAlarm* pAlarm = iter->second; |
| | | pAlarm->alarmOff(); |
| | | addAlarmToHistoryRecord(pAlarm); |
| | | m_mapAlarming.erase(iter++); |
| | | |
| | | LOGE("æ¶é¤äºè¦å:%s", pAlarm->toString().c_str()); |
| | | SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", pAlarm)); |
| | | pAlarm->release(); |
| | | } |
| | | else { |
| | | iter++; |
| | |
| | | } |
| | | } |
| | | |
| | | void CAlarmMonitor::getAlarmingMap(std::map<int, CAlarm*>& alarms) |
| | | std::map<int, CAlarm*>& CAlarmMonitor::getAlarmingMap() |
| | | { |
| | | Lock(); |
| | | alarms = m_mapAlarming; |
| | | Unlock(); |
| | | return m_mapAlarming; |
| | | } |
| | | |
| | | BOOL CAlarmMonitor::isAlarming() |
| | |
| | | return bAlarming; |
| | | } |
| | | |
| | | CAlarm* CAlarmMonitor::getActiveAlarm() |
| | | { |
| | | Lock(); |
| | | if (m_mapAlarming.empty()) { |
| | | Unlock(); |
| | | return nullptr; |
| | | } |
| | | auto iter = m_mapAlarming.begin(); |
| | | Unlock(); |
| | | |
| | | return iter->second; |
| | | } |
| | | |
| | | std::list< CAlarm*>& CAlarmMonitor::getAlarmRecords() |
| | | { |
| | | return m_alarms; |
| | | } |
| | | |
| | | void CAlarmMonitor::getAlarmRecords(std::list< CAlarm*>& list) |
| | | { |
| | | Lock(); |
| | | list = m_alarms; |
| | | Unlock(); |
| | | } |
| | | |
| | | BOOL CAlarmMonitor::compareData(const char* pScrData, const char* pTarData, int len) |
| | | { |
| | | for (int i = 0; i < len; i++) { |
| | |
| | | virtual void OnTimer(UINT nTimerid); |
| | | const char* getAlarmText(int nID); |
| | | virtual void Serialize(CArchive& ar); |
| | | void getAlarmingMap(std::map<int, CAlarm*>& alarms); |
| | | std::map<int, CAlarm*>& getAlarmingMap(); |
| | | BOOL isAlarming(); |
| | | CAlarm* getActiveAlarm(); |
| | | void getAlarmRecords(std::list< CAlarm*>& list); |
| | | std::list< CAlarm*>& getAlarmRecords(); |
| | | |
| | | private: |
| | | BOOL compareData(const char* pScrData, const char* pTarData, int len); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // 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("è¦åä¿¡æ¯"); |
| | | 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); |
| | | } |
| | | else { |
| | | ShowWindow(SW_HIDE); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #pragma once |
| | | #include "BlButton.h" |
| | | #include "Alarm.h" |
| | | |
| | | |
| | | // CAlarmPopupDlg å¯¹è¯æ¡ |
| | | |
| | | class CAlarmPopupDlg : public CDialogEx |
| | | { |
| | | DECLARE_DYNAMIC(CAlarmPopupDlg) |
| | | |
| | | public: |
| | | CAlarmPopupDlg(CWnd* pParent = NULL); // æ åæé 彿° |
| | | virtual ~CAlarmPopupDlg(); |
| | | |
| | | |
| | | public: |
| | | void AlarmOn(); |
| | | void AlarmOff(); |
| | | |
| | | private: |
| | | void ShowFirstAlarm(); |
| | | |
| | | private: |
| | | COLORREF m_crBkgnd; |
| | | HBRUSH m_hbrBkgnd; |
| | | CFont m_fontTitle; |
| | | CFont m_fontLevel; |
| | | CFont m_fontName; |
| | | CFont m_fontDescription; |
| | | |
| | | private: |
| | | CAlarm* m_pActiveAlarm; |
| | | 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 OnSize(UINT nType, int cx, int cy); |
| | | afx_msg void OnBnClickedButtonClose(); |
| | | }; |
| | |
| | | <Text Include="ReadMe.txt" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ClInclude Include="AlarmPopupDlg.h" /> |
| | | <ClInclude Include="CComponentDlg.h" /> |
| | | <ClInclude Include="CComponentPLCDlg.h" /> |
| | | <ClInclude Include="CPLC.h" /> |
| | |
| | | <ClInclude Include="View\UserManagerDlg.h" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ClCompile Include="AlarmPopupDlg.cpp" /> |
| | | <ClCompile Include="CComponentDlg.cpp" /> |
| | | <ClCompile Include="CComponentPLCDlg.cpp" /> |
| | | <ClCompile Include="CPLC.cpp" /> |
| | |
| | | m_pHomeDialog = nullptr; |
| | | m_pActiveView = nullptr; |
| | | m_pActiveComponentDlg = nullptr; |
| | | m_pAlarmWnd = nullptr; |
| | | } |
| | | |
| | | void CBondEqDlg::DoDataExchange(CDataExchange* pDX) |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else if (code == RX_CODE_ALARM_ON) { |
| | | AlarmOn(); |
| | | } |
| | | else if (code == RX_CODE_ALARM_OFF) { |
| | | AlarmOff(); |
| | | } |
| | | pAny->release(); |
| | | }, [&]() -> void { |
| | |
| | | |
| | | if (m_hbrBkgnd != nullptr) { |
| | | ::DeleteObject(m_hbrBkgnd); |
| | | } |
| | | |
| | | if (m_pAlarmWnd != nullptr) { |
| | | m_pAlarmWnd->DestroyWindow(); |
| | | delete m_pAlarmWnd; |
| | | } |
| | | |
| | | ASSERT(m_pObserver != NULL); |
| | |
| | | return pDlg; |
| | | } |
| | | |
| | | void CBondEqDlg::AlarmOn() |
| | | { |
| | | if (m_pAlarmWnd == nullptr) { |
| | | m_pAlarmWnd = new CAlarmPopupDlg(); |
| | | m_pAlarmWnd->Create(IDD_DIALOG_POPUP_ALARM, this); |
| | | m_pAlarmWnd->CenterWindow(); |
| | | } |
| | | m_pAlarmWnd->ShowWindow(SW_SHOW); |
| | | m_pAlarmWnd->AlarmOn(); |
| | | } |
| | | |
| | | void CBondEqDlg::AlarmOff() |
| | | { |
| | | if (m_pAlarmWnd == nullptr) { |
| | | m_pAlarmWnd = new CAlarmPopupDlg(); |
| | | m_pAlarmWnd->Create(IDD_DIALOG_POPUP_ALARM, this); |
| | | m_pAlarmWnd->CenterWindow(); |
| | | } |
| | | m_pAlarmWnd->AlarmOff(); |
| | | } |
| | |
| | | #include "CRemoteEqView.h" |
| | | #include "TopToolbar.h" |
| | | #include "CComponentPLCDlg.h" |
| | | #include "AlarmPopupDlg.h" |
| | | |
| | | |
| | | // CBondEqDlg å¯¹è¯æ¡ |
| | |
| | | CBaseView* CreateRemoteEqView(BEQ::IRemoteEquipment* pEquipment); |
| | | CComponentPLCDlg* CreateComponentPLCDlg(CComponent* pComponent); |
| | | void UpdateLoginStatus(); |
| | | void AlarmOn(); |
| | | void AlarmOff(); |
| | | |
| | | private: |
| | | COLORREF m_crBkgnd; |
| | |
| | | CHomeDialog* m_pHomeDialog; |
| | | CBaseView* m_pActiveView; |
| | | CComponentDlg* m_pActiveComponentDlg; |
| | | CAlarmPopupDlg* m_pAlarmWnd; |
| | | |
| | | // å¯¹è¯æ¡æ°æ® |
| | | #ifdef AFX_DESIGN_TIME |
| | |
| | | pPlc->addMonitor(1, 4400, 4499, MC::SOFT_COMPONENT::D, m_pPlcData); |
| | | pPlc->addMonitor(2, 4500, 4599, MC::SOFT_COMPONENT::D, &m_pPlcData[200]); |
| | | pPlc->addMonitor(3, 4700, 4791, MC::SOFT_COMPONENT::D, &m_pPlcData[400]); |
| | | pPlc->addMonitor(MONITOR_ID_ALARM, 1001, 1064, MC::SOFT_COMPONENT::M, &m_pPlcData[600]); |
| | | pPlc->addMonitor(MONITOR_ID_ALARM, 10001, 10064, MC::SOFT_COMPONENT::M, &m_pPlcData[600]); |
| | | |
| | | pPlc->setName("PLC(1)"); |
| | | pPlc->setDescription("PLC"); |
| | |
| | | if (iii % 5 == 0) { |
| | | save(); |
| | | } |
| | | |
| | | |
| | | // æµè¯ |
| | | BOOL bTest = FALSE; |
| | | if (bTest) { |
| | | static int xx = 0; |
| | | xx++; |
| | | memset(&m_pPlcData[600], 0, 260); |
| | | if (xx == 12) { |
| | | m_pPlcData[600] = 0x01; |
| | | for (auto c : m_components) { |
| | | c->onData(MONITOR_ID_ALARM, &m_pPlcData[600], 260); |
| | | } |
| | | } |
| | | else if (xx == 20) { |
| | | m_pPlcData[600] = 0x00; |
| | | for (auto c : m_components) { |
| | | c->onData(MONITOR_ID_ALARM, &m_pPlcData[600], 260); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | void CBonder::AddComponent(CComponent* pComponent) |
| | |
| | | #include "CPageAlarm.h" |
| | | #include "afxdialogex.h" |
| | | #include "Common.h" |
| | | #include "ToolUnits.h" |
| | | |
| | | |
| | | // CPageAlarm å¯¹è¯æ¡ |
| | |
| | | // onNext |
| | | pAny->addRef(); |
| | | int code = pAny->getCode(); |
| | | if (RX_CODE_LOG == code && ::IsWindow(m_hWnd)) { |
| | | |
| | | if (RX_CODE_ALARM_ON == code) { |
| | | CAlarm* pAlarm; |
| | | if (pAny->getObject("obj", (IRxObject*&)pAlarm)) { |
| | | AddAlarm(nullptr, pAlarm); |
| | | } |
| | | } |
| | | else if (RX_CODE_ALARM_OFF == code) { |
| | | CAlarm* pAlarm; |
| | | if (pAny->getObject("obj", (IRxObject*&)pAlarm)) { |
| | | UpdateAlarm(nullptr, pAlarm); |
| | | } |
| | | } |
| | | |
| | | pAny->release(); |
| | |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | InitRxWindow(); |
| | | |
| | | |
| | | // æ¥è¡¨æ§ä»¶ |
| | | CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_ALARM); |
| | | DWORD dwStyle = pListCtrl->GetExtendedStyle(); |
| | | dwStyle |= LVS_EX_FULLROWSELECT; |
| | | dwStyle |= LVS_EX_GRIDLINES; |
| | | pListCtrl->SetExtendedStyle(dwStyle); |
| | | |
| | | HIMAGELIST imageList = ImageList_Create(24, 24, ILC_COLOR24, 1, 1); |
| | | ListView_SetImageList(pListCtrl->GetSafeHwnd(), imageList, LVSIL_SMALL); |
| | | pListCtrl->InsertColumn(0, _T(""), LVCFMT_RIGHT, 0); |
| | | pListCtrl->InsertColumn(2, _T("è¦åID"), LVCFMT_LEFT, 100); |
| | | pListCtrl->InsertColumn(3, _T("æè¿°"), LVCFMT_LEFT, 580); |
| | | pListCtrl->InsertColumn(4, _T("åçæ¶é´"), LVCFMT_LEFT, 180); |
| | | pListCtrl->InsertColumn(5, _T("è§£é¤æ¶é´"), LVCFMT_LEFT, 180); |
| | | |
| | | |
| | | Resize(); |
| | | LoadAlarms(); |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE |
| | |
| | | return m_hbrBkgnd; |
| | | } |
| | | |
| | | |
| | | void CPageAlarm::OnDestroy() |
| | | { |
| | | CDialogEx::OnDestroy(); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | void CPageAlarm::OnSize(UINT nType, int cx, int cy) |
| | | { |
| | | CDialogEx::OnSize(nType, cx, cy); |
| | | if (GetDlgItem(IDC_LIST_ALARM) == nullptr) return; |
| | | Resize(); |
| | | } |
| | | |
| | | // TODO: 卿¤å¤æ·»å æ¶æ¯å¤çç¨åºä»£ç |
| | | void CPageAlarm::Resize() |
| | | { |
| | | CWnd* pItem; |
| | | CRect rcClient; |
| | | GetClientRect(&rcClient); |
| | | |
| | | pItem = GetDlgItem(IDC_LIST_ALARM); |
| | | pItem->MoveWindow(12, 12, rcClient.Width() - 24, rcClient.Height() - 24); |
| | | } |
| | | |
| | | void CPageAlarm::LoadAlarms() |
| | | { |
| | | CAlarmMonitor* pMonitor = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent("è¦åä¿¡æ¯"); |
| | | |
| | | pMonitor->Lock(); |
| | | std::map<int, CAlarm*>& alarmings = pMonitor->getAlarmingMap(); |
| | | std::list< CAlarm*>& alarms = pMonitor->getAlarmRecords(); |
| | | |
| | | for (auto item : alarmings) { |
| | | AddAlarm(pMonitor, item.second); |
| | | } |
| | | for (auto item : alarms) { |
| | | AddAlarm(pMonitor, item); |
| | | } |
| | | |
| | | pMonitor->Unlock(); |
| | | } |
| | | |
| | | void CPageAlarm::AddAlarm(CAlarmMonitor* pMonitor, CAlarm* pAlarm) |
| | | { |
| | | if (pMonitor == nullptr) { |
| | | pMonitor = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent("è¦åä¿¡æ¯"); |
| | | } |
| | | CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_ALARM); |
| | | pListCtrl->InsertItem(0, _T("")); |
| | | pListCtrl->SetItemData(0, (DWORD_PTR)pAlarm); |
| | | pAlarm->addRef(); |
| | | pListCtrl->SetItemText(0, 1, std::to_string(pAlarm->getId()).c_str()); |
| | | pListCtrl->SetItemText(0, 2, pMonitor->getAlarmText(pAlarm->getId())); |
| | | pListCtrl->SetItemText(0, 3, CToolUnits::timeToString2(pAlarm->getOnTime()).c_str()); |
| | | if (pAlarm->getOffTime() > 0) { |
| | | pListCtrl->SetItemText(0, 4, CToolUnits::timeToString2(pAlarm->getOffTime()).c_str()); |
| | | } |
| | | } |
| | | |
| | | void CPageAlarm::UpdateAlarm(CAlarmMonitor* pMonitor, CAlarm* pAlarm) |
| | | { |
| | | if (pMonitor == nullptr) { |
| | | pMonitor = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent("è¦åä¿¡æ¯"); |
| | | } |
| | | CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_ALARM); |
| | | for (int i = 0; i < pListCtrl->GetItemCount(); i++) { |
| | | if (pListCtrl->GetItemData(i) == (DWORD_PTR)pAlarm) { |
| | | if (pAlarm->getOffTime() > 0) { |
| | | pListCtrl->SetItemText(i, 4, CToolUnits::timeToString2(pAlarm->getOffTime()).c_str()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | BOOL CPageAlarm::DestroyWindow() |
| | | { |
| | | CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_ALARM); |
| | | for (int i = 0; i < pListCtrl->GetItemCount(); i++) { |
| | | CAlarm* pAlarm = (CAlarm*)pListCtrl->GetItemData(i); |
| | | pAlarm->release(); |
| | | } |
| | | |
| | | return CDialogEx::DestroyWindow(); |
| | | } |
| | |
| | | #pragma once |
| | | #include "AlarmMonitor.h" |
| | | |
| | | |
| | | // CPageAlarm å¯¹è¯æ¡ |
| | |
| | | |
| | | private: |
| | | void InitRxWindow(); |
| | | void Resize(); |
| | | void LoadAlarms(); |
| | | void AddAlarm(CAlarmMonitor* pMonitor, CAlarm* pAlarm); |
| | | void UpdateAlarm(CAlarmMonitor* pMonitor, CAlarm* pAlarm); |
| | | |
| | | private: |
| | | COLORREF m_crBkgnd; |
| | |
| | | afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); |
| | | afx_msg void OnDestroy(); |
| | | afx_msg void OnSize(UINT nType, int cx, int cy); |
| | | virtual BOOL DestroyWindow(); |
| | | }; |
| | |
| | | #define BTN_POINT_BKGND_PRESS RGB(0, 232, 0) |
| | | |
| | | |
| | | /* è§£é¤è¦å æé® */ |
| | | #define BTN_ALARM_OFF_FRAME_NORMAL RGB(88, 88, 88) |
| | | #define BTN_ALARM_OFF_FRAME_HOVER RGB(88, 88, 88) |
| | | #define BTN_ALARM_OFF_FRAME_PRESS RGB(88, 88, 88) |
| | | #define BTN_ALARM_OFF_BKGND_NORMAL RGB(255, 127, 39) |
| | | #define BTN_ALARM_OFF_BKGND_HOVER RGB(255, 157, 59) |
| | | #define BTN_ALARM_OFF_BKGND_PRESS RGB(255, 100, 29) |
| | | |
| | | |
| | | /* éé³æé® */ |
| | | #define BTN_SOUND_OFF_FRAME_NORMAL RGB(88, 88, 88) |
| | | #define BTN_SOUND_OFF_FRAME_HOVER RGB(88, 88, 88) |
| | | #define BTN_SOUND_OFF_FRAME_PRESS RGB(88, 88, 88) |
| | | #define BTN_SOUND_OFF_BKGND_NORMAL RGB(255, 127, 39) |
| | | #define BTN_SOUND_OFF_BKGND_HOVER RGB(255, 157, 59) |
| | | #define BTN_SOUND_OFF_BKGND_PRESS RGB(255, 100, 29) |
| | | |
| | | |
| | | /* æé®id */ |
| | | #define VIEW_TOOL_BTN_CLOSE 0x1016 |
| | | |
| | |
| | | int WriteData(MC::SOFT_COMPONENT softComponent, unsigned int addr, |
| | | const char* pszData, unsigned int length, ONWRITE funOnWrite); |
| | | |
| | | protected: |
| | | public: |
| | | inline void Lock() { EnterCriticalSection(&m_criticalSection); } |
| | | inline void Unlock() { LeaveCriticalSection(&m_criticalSection); } |
| | | |
| | | protected: |
| | | void SendBroadcast(CIntent* pIntent); |
| | | |
| | | protected: |
| | |
| | | m_crBkgnd = cr; |
| | | } |
| | | |
| | | void CHorizontalLine::SetLineColor(COLORREF cr) |
| | | { |
| | | m_crLineColor = cr; |
| | | } |
| | | |
| | | |
| | |
| | | void Notify(int nCode, int dwData, int dwData1 = 0, int dwData2 = 0); |
| | | void Release(); |
| | | void SetBkgndColor(COLORREF cr); |
| | | void SetLineColor(COLORREF cr); |
| | | static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); |
| | | static LRESULT OnNcCreate(HWND hWnd, WPARAM wParam, LPARAM lParam); |
| | | LRESULT OnDestroy(WPARAM wParam, LPARAM lParam); |
| | |
| | | SetWindowText(m_strTitle); |
| | | m_staticPrompt.SetWindowText(m_strPrompt); |
| | | m_editInput.SetFocus(); |
| | | m_editInput.SetWindowText("1"); |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // å¼å¸¸: OCX 屿§é¡µåºè¿å FALSE |