From e688cec6c19b3582d441581a8e12fb30686d6644 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 07 一月 2025 17:55:40 +0800
Subject: [PATCH] 1.增加没有PLC时的提示;
---
SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp | 186 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 186 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp b/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
index a0db823..4ff72a9 100644
--- a/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
+++ b/SourceCode/Bond/BoounionPLC/BoounionPLCDlg.cpp
@@ -71,6 +71,13 @@
ON_WM_DESTROY()
ON_WM_SIZE()
ON_WM_CTLCOLOR()
+ ON_COMMAND(ID_MENU_FILE_EXIT, &CBoounionPLCDlg::OnMenuFileExit)
+ 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_HELP_ABOUT, &CBoounionPLCDlg::OnMenuHelpAbout)
+ ON_WM_INITMENUPOPUP()
+ ON_MESSAGE(ID_MSG_TOOLBAR_BTN_CLICKED, &CBoounionPLCDlg::OnToolbarBtnClicked)
END_MESSAGE_MAP()
@@ -104,6 +111,7 @@
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
+ theApp.m_model.init();
// toolbar
@@ -119,6 +127,12 @@
m_pPagePlcList = new CPagePlcList();
m_pPagePlcList->Create(IDD_PAGE_PLC_LIST, this);
m_pPagePlcList->ShowWindow(SW_SHOW);
+
+
+ // 菜单
+ CMenu menu;
+ menu.LoadMenu(IDR_MENU_APP);
+ SetMenu(&menu);
ShowWindow(SW_MAXIMIZE);
@@ -177,6 +191,76 @@
return static_cast<HCURSOR>(m_hIcon);
}
+void CBoounionPLCDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
+{
+ ASSERT(pPopupMenu != NULL);
+
+ CCmdUI state;
+ state.m_pMenu = pPopupMenu;
+ ASSERT(state.m_pOther == NULL);
+ ASSERT(state.m_pParentMenu == NULL);
+
+ HMENU hParentMenu;
+ if (AfxGetThreadState()->m_hTrackingMenu == pPopupMenu->m_hMenu)
+ state.m_pParentMenu = pPopupMenu;
+ else if ((hParentMenu = ::GetMenu(m_hWnd)) != NULL)
+ {
+ CWnd* pParent = this;
+ if (pParent != NULL &&
+ (hParentMenu = ::GetMenu(pParent->m_hWnd)) != NULL)
+ {
+ int nIndexMax = ::GetMenuItemCount(hParentMenu);
+ for (int nIndex = 0; nIndex < nIndexMax; nIndex++)
+ {
+ if (::GetSubMenu(hParentMenu, nIndex) == pPopupMenu->m_hMenu)
+ {
+ state.m_pParentMenu = CMenu::FromHandle(hParentMenu);
+ break;
+ }
+ }
+ }
+ }
+
+ state.m_nIndexMax = pPopupMenu->GetMenuItemCount();
+ for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax;
+ state.m_nIndex++)
+ {
+ state.m_nID = pPopupMenu->GetMenuItemID(state.m_nIndex);
+ if (state.m_nID == 0)
+ continue;
+
+ ASSERT(state.m_pOther == NULL);
+ ASSERT(state.m_pMenu != NULL);
+ if (state.m_nID == (UINT)-1)
+ {
+ state.m_pSubMenu = pPopupMenu->GetSubMenu(state.m_nIndex);
+ if (state.m_pSubMenu == NULL ||
+ (state.m_nID = state.m_pSubMenu->GetMenuItemID(0)) == 0 ||
+ state.m_nID == (UINT)-1)
+ {
+ continue;
+ }
+ state.DoUpdate(this, TRUE);
+ }
+ else
+ {
+ state.m_pSubMenu = NULL;
+ state.DoUpdate(this, FALSE);
+ }
+
+ UINT nCount = pPopupMenu->GetMenuItemCount();
+ if (nCount < state.m_nIndexMax)
+ {
+ state.m_nIndex -= (state.m_nIndexMax - nCount);
+ while (state.m_nIndex < nCount &&
+ pPopupMenu->GetMenuItemID(state.m_nIndex) == state.m_nID)
+ {
+ state.m_nIndex++;
+ }
+ }
+ state.m_nIndexMax = nCount;
+ }
+}
void CBoounionPLCDlg::OnDestroy()
{
@@ -238,3 +322,105 @@
return m_hbrBkgnd;
}
+
+void CBoounionPLCDlg::OnMenuFileSettings()
+{
+ //CSettingsDlg dlg;
+ //dlg.DoModal();
+}
+
+void CBoounionPLCDlg::OnUpdateMenuFileSettings(CCmdUI* pCmdUI)
+{
+ pCmdUI->Enable(FALSE);
+}
+
+void CBoounionPLCDlg::OnMenuFileExit()
+{
+ PostMessage(WM_CLOSE);
+}
+
+void CBoounionPLCDlg::OnUpdateMenuFileExit(CCmdUI* pCmdUI)
+{
+ pCmdUI->Enable(TRUE);
+}
+
+void CBoounionPLCDlg::OnMenuHelpAbout()
+{
+ CAboutDlg dlgAbout;
+ dlgAbout.DoModal();
+}
+
+LRESULT CBoounionPLCDlg::OnToolbarBtnClicked(WPARAM wParam, LPARAM lParam)
+{
+ int id = (int)lParam;
+ if (id == IDC_BUTTON_ADD) {
+ static int i = 0;
+ char szName[256];
+ sprintf_s(szName, 256, "PLC%d", ++i);
+ theApp.m_model.addPlc(szName, "192.168.1.188", 1001);
+ }
+ else if (id == IDC_BUTTON_DELETE) {
+ static int i = 0;
+ i += 1;
+ char szName[256];
+ sprintf_s(szName, 256, "PLC%d", i);
+ theApp.m_model.removePlc(szName);
+ }
+ else if (id == IDC_BUTTON_SETTINGS) {
+
+ }
+ else if (id == IDC_BUTTON_OPERATOR) {
+ /*
+ int menuId = (int)wParam;
+ UserManager& userManager = UserManager::getInstance();
+ if (menuId == 0) {
+ CLoginDlg loginDlg;
+ loginDlg.DoModal();
+ }
+ else if (1 == menuId) {
+ CChangePasswordDlg changePasswordDlg;
+ changePasswordDlg.DoModal();
+ }
+ else if (2 == menuId) {
+ CUserManagerDlg dlg;
+ if (dlg.DoModal() != IDOK) {
+ logManager.log(SystemLogManager::LogType::Operation, _T("用户管理的预操作被取消!"));
+ }
+ }
+ else if (3 == menuId) {
+ CSystemLogManagerDlg dlg;
+ dlg.DoModal();
+ }
+ else if (4 == menuId) {
+ int ret = AfxMessageBox(_T("是否切换用户?切换用户会退出当前账号!"), MB_OKCANCEL | MB_ICONEXCLAMATION);
+ if (ret != IDOK) {
+ return 0;
+ }
+
+ logManager.log(SystemLogManager::LogType::Operation, _T("确认切换角色!"));
+ if (userManager.isLoggedIn()) {
+ logManager.log(SystemLogManager::LogType::Info, _T("退出登录!"));
+ userManager.logout();
+ }
+
+ CLoginDlg loginDlg;
+ loginDlg.DoModal();
+ }
+ else {
+ CString cstrMessage;
+ cstrMessage.Format(_T("是否退出用户 [%s]?"), userManager.getCurrentUser().c_str());
+ int ret = AfxMessageBox(_T(cstrMessage), MB_OKCANCEL | MB_ICONEXCLAMATION);
+ if (ret != IDOK) {
+ return 0;
+ }
+
+ logManager.log(SystemLogManager::LogType::Info, _T("退出登录!"));
+ userManager.logout();
+ }
+
+ UpdateLoginStatus();
+ */
+ }
+
+ return 0;
+}
--
Gitblit v1.9.3