From 4656e074123feced4aa1691c53a4aff85514cffa Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 09 一月 2025 11:00:26 +0800
Subject: [PATCH] 1.日志窗口的显示和隐藏(菜单操作);

---
 SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp |   76 +++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 1 deletions(-)

diff --git a/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp b/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
index dbd2ea0..d8fc12f 100644
--- a/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
+++ b/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
@@ -8,11 +8,16 @@
 #include "afxdialogex.h"
 #include "Common.h"
 #include "PlcView.h"
+#include "AlarmMonitor.h"
+#include "Log.h"
+
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
 #endif
 
+
+#define LOG_WND_HEIGHT		258
 
 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
 
@@ -60,6 +65,8 @@
 	m_crBkgnd = APP_MAIN_DLG_BACKGROUND;
 	m_hbrBkgnd = nullptr;
 	m_pActiveView = nullptr;
+	m_pPageLogcat = nullptr;
+	m_bShowLogWnd = TRUE;
 }
 
 void CBoounionPLCDlg::DoDataExchange(CDataExchange* pDX)
@@ -78,6 +85,8 @@
 	ON_UPDATE_COMMAND_UI(ID_MENU_FILE_EXIT, &CBoounionPLCDlg::OnUpdateMenuFileExit)
 	ON_COMMAND(ID_MENU_FILE_SETTINGS, &CBoounionPLCDlg::OnMenuFileSettings)
 	ON_UPDATE_COMMAND_UI(ID_MENU_FILE_SETTINGS, &CBoounionPLCDlg::OnUpdateMenuFileSettings)
+	ON_COMMAND(ID_MENU_WND_LOG, &CBoounionPLCDlg::OnMenuWndLog)
+	ON_UPDATE_COMMAND_UI(ID_MENU_WND_LOG, &CBoounionPLCDlg::OnUpdateMenuWndLog)
 	ON_COMMAND(ID_MENU_HELP_ABOUT, &CBoounionPLCDlg::OnMenuHelpAbout)
 	ON_WM_INITMENUPOPUP()
 	ON_MESSAGE(ID_MSG_TOOLBAR_BTN_CLICKED, &CBoounionPLCDlg::OnToolbarBtnClicked)
@@ -112,10 +121,20 @@
 					if (m_pActiveView->GetContext() != (void*)pPlc) {
 						m_pActiveView->SetWindowText(pPlc->getName().c_str());
 						m_pActiveView->SetContext(pPlc);
+						m_pActiveView->SendMessage(WM_NCPAINT, 0, 0);
 					}
 				}
 			}
-
+			else if (code == RX_CODE_ALARM_ON) {
+				AlarmOn();
+				// CAlarmMonitor* pComponent = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent(ALARM_MONITOR);
+				// m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(pComponent->isAlarming());
+			}
+			else if (code == RX_CODE_ALARM_OFF) {
+				AlarmOff();
+				// CAlarmMonitor* pComponent = (CAlarmMonitor*)theApp.m_model.getBonder().GetComponent(ALARM_MONITOR);
+				// m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(pComponent->isAlarming());
+			}
 			pAny->release();
 		}, [&]() -> void {
 			// onComplete
@@ -163,6 +182,7 @@
 	// toolbar
 	m_pTopToolbar = new CTopToolbar();
 	m_pTopToolbar->Create(IDD_TOP_TOOLBAR, this);
+	m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(FALSE);
 	m_pTopToolbar->ShowWindow(SW_SHOW);
 	HMENU hMenu = m_pTopToolbar->GetOperatorMenu();
 	ASSERT(hMenu);
@@ -179,6 +199,13 @@
 	m_pMainContainer = new CMainContainer();
 	m_pMainContainer->Create(IDD_MAIN_CONTAINER, this);
 	m_pMainContainer->ShowWindow(SW_SHOW);
+
+
+	// 日志
+	m_pPageLogcat = new CPageLogcat();
+	m_pPageLogcat->Create(IDD_PAGE_LOGCAT, m_pMainContainer);
+	m_pPageLogcat->ShowWindow(SW_SHOW);
+	m_pMainContainer->SetBottomWnd(m_pPageLogcat, LOG_WND_HEIGHT);
 
 
 	// 菜单
@@ -415,6 +442,31 @@
 	pCmdUI->Enable(TRUE);
 }
 
+void CBoounionPLCDlg::OnMenuWndLog()
+{
+	m_bShowLogWnd = !m_bShowLogWnd;
+
+	if (m_bShowLogWnd) {
+		LOGD("显示日志窗口");
+		m_pPageLogcat->ShowWindow(SW_SHOW);
+		m_pPageLogcat->SetParent(m_pMainContainer);
+		m_pMainContainer->SetBottomWnd(m_pPageLogcat, LOG_WND_HEIGHT);
+		m_pMainContainer->Resize();
+	}
+	else {
+		LOGD("隐藏日志窗口");
+		m_pPageLogcat->ShowWindow(SW_HIDE);
+		m_pPageLogcat->SetParent(this);
+		m_pMainContainer->SetBottomWnd(nullptr, 0);
+		m_pMainContainer->Resize();
+	}
+}
+
+void CBoounionPLCDlg::OnUpdateMenuWndLog(CCmdUI* pCmdUI)
+{
+	pCmdUI->SetCheck(m_bShowLogWnd);
+}
+
 void CBoounionPLCDlg::OnMenuHelpAbout()
 {
 	CAboutDlg dlgAbout;
@@ -554,3 +606,25 @@
 	m_pActiveView = nullptr;
 	m_pMainContainer->Resize();
 }
+
+void CBoounionPLCDlg::AlarmOn()
+{
+	if (m_pAlarmWnd == nullptr) {
+		m_pAlarmWnd = new CAlarmPopupDlg();
+		//m_pAlarmWnd->SetPLC(theApp.m_model.getBonder().getPLC("PLC(1)"));
+		m_pAlarmWnd->Create(IDD_DIALOG_POPUP_ALARM, this);
+		m_pAlarmWnd->CenterWindow();
+	}
+	m_pAlarmWnd->AlarmOn();
+}
+
+void CBoounionPLCDlg::AlarmOff()
+{
+	if (m_pAlarmWnd == nullptr) {
+		m_pAlarmWnd = new CAlarmPopupDlg();
+		//m_pAlarmWnd->SetPLC(theApp.m_model.getBonder().getPLC("PLC(1)"));
+		m_pAlarmWnd->Create(IDD_DIALOG_POPUP_ALARM, this);
+		m_pAlarmWnd->CenterWindow();
+	}
+	m_pAlarmWnd->AlarmOff();
+}

--
Gitblit v1.9.3