From 518ed5e189c36f99af1157995ddd2bb61489b5a5 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 03 一月 2025 14:31:21 +0800
Subject: [PATCH] 1.联调后优化;

---
 SourceCode/Bond/BondEq/AlarmPopupDlg.cpp |   40 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/SourceCode/Bond/BondEq/AlarmPopupDlg.cpp b/SourceCode/Bond/BondEq/AlarmPopupDlg.cpp
index dd9b9b2..f37c3ca 100644
--- a/SourceCode/Bond/BondEq/AlarmPopupDlg.cpp
+++ b/SourceCode/Bond/BondEq/AlarmPopupDlg.cpp
@@ -21,6 +21,7 @@
 	m_crBkgnd = RGB(225, 225, 225);
 	m_hbrBkgnd = nullptr;
 	m_pActiveAlarm = nullptr;
+	m_pObserver = nullptr;
 }
 
 CAlarmPopupDlg::~CAlarmPopupDlg()
@@ -52,6 +53,35 @@
 
 // CAlarmPopupDlg 消息处理程序
 
+
+void CAlarmPopupDlg::InitRxWindows()
+{
+	/* code */
+	// 订阅数据
+	IRxWindows* pRxWindows = RX_GetRxWindows();
+	pRxWindows->enableLog(5);
+	if (m_pObserver == NULL) {
+		m_pObserver = pRxWindows->allocObserver([&](IAny* pAny) -> void {
+			// onNext
+			pAny->addRef();
+			int code = pAny->getCode();
+			if (RX_CODE_BONDER_BEEP == code) {
+				bool bMute = theApp.m_model.getBonder().isMute();
+				SetButtonBackgroundColors(bMute);
+				TRACE("RX_CODE_BONDER_BEEP %s\n", bMute ? "1" : "0");
+			}
+			pAny->release();
+		}, [&]() -> void {
+			// onComplete
+		}, [&](IThrowable* pThrowable) -> void {
+			// onErrorm
+			pThrowable->printf();
+		});
+
+		theApp.m_model.getObservable()->observeOn(pRxWindows->mainThread())
+			->subscribe(m_pObserver);
+	}
+}
 
 BOOL CAlarmPopupDlg::OnInitDialog()
 {
@@ -143,6 +173,7 @@
 	pLine->SetLineColor(RGB(168, 168, 168));
 
 
+	InitRxWindows();
 	return TRUE;  // return TRUE unless you set the focus to a control
 				  // 异常: OCX 属性页应返回 FALSE
 }
@@ -176,6 +207,11 @@
 	if (m_pActiveAlarm != nullptr) {
 		m_pActiveAlarm->release();
 		m_pActiveAlarm = nullptr;
+	}
+
+	if (m_pObserver != nullptr) {
+		m_pObserver->unsubscribe();
+		m_pObserver = NULL;
 	}
 }
 
@@ -231,11 +267,13 @@
 		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);
+		m_btnSoundOff.Invalidate();
 	}
 	else {
 		m_btnSoundOff.SetBkgndColor(BS_NORMAL, BTN_SOUND_ON_BKGND_NORMAL);
 		m_btnSoundOff.SetBkgndColor(BS_HOVER, BTN_SOUND_ON_BKGND_HOVER);
 		m_btnSoundOff.SetBkgndColor(BS_PRESS, BTN_SOUND_ON_BKGND_PRESS);
+		m_btnSoundOff.Invalidate();
 	}
 }
 
@@ -258,8 +296,6 @@
 			TRACE("操作失败:地址=1003,错误码=%d\n", nFlag);
 		}
 	});
-
-	SetButtonBackgroundColors(!bMute);
 }
 
 void CAlarmPopupDlg::OnBnClickedButtonAlarmOff()

--
Gitblit v1.9.3