From 2070871df480a664c9c4e38bc4e4e324682a64c6 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期四, 03 四月 2025 16:12:28 +0800
Subject: [PATCH] 1. 解决 WebView2 控制器创建失败时闪退的问题 2. 解决连接图销毁时保存设备图形数据闪退的问题
---
SourceCode/Bond/Servo/CPageGraph2.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 89 insertions(+), 17 deletions(-)
diff --git a/SourceCode/Bond/Servo/CPageGraph2.cpp b/SourceCode/Bond/Servo/CPageGraph2.cpp
index 83c2471..2a5a00e 100644
--- a/SourceCode/Bond/Servo/CPageGraph2.cpp
+++ b/SourceCode/Bond/Servo/CPageGraph2.cpp
@@ -5,6 +5,9 @@
#include "Servo.h"
#include "CPageGraph2.h"
#include "afxdialogex.h"
+#include "CHMPropertyDlg.h"
+#include "CEquipmentPage1.h"
+#include "CEquipmentPage2.h"
// CPageGraph2 瀵硅瘽妗�
@@ -54,11 +57,6 @@
ASSERT(pPin1->pData);
ASSERT(pPin2->pData);
- //int nRet = ((IPin*)pPin1->pData)->checkConnectPin((IPin*)pPin2->pData);
- //if (nRet >= 0) {
- // return true;
- //}
-
return false;
};
listener.onConnectPin = [](PIN* pPin1, PIN* pPin2) -> bool {
@@ -67,39 +65,110 @@
ASSERT(pPin1->pData);
ASSERT(pPin2->pData);
- //int nRet = ((IPin*)pPin1->pData)->connectPin((IPin*)pPin2->pData);
- //if (nRet >= 0) {
- // return true;
- //}
-
return false;
};
listener.onDisconnectPin = [](PIN* pPin) -> bool {
ASSERT(pPin);
ASSERT(pPin->pData);
- //int nRet = ((IPin*)pPin->pData)->disconnect();
- //if (nRet >= 0) {
- // return true;
- //}
-
return false;
};
listener.onDeleteEqItem = [&](EQITEM* pItem) -> bool {
ASSERT(pItem);
ASSERT(pItem->pData);
- return true;
- // return _filterManager.unload((CFilter*)pFilter->pData) >= 0;
+ return false;
};
listener.onEqItemPosChanged = [&](EQITEM* pItem, int x, int y) -> void {
ASSERT(pItem);
};
listener.onDblckEqItem = [&](EQITEM* pItem) -> bool {
ASSERT(pItem);
+ SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
+
+ CHMPropertyDlg dlg(pEquipment->getName().c_str(), 600, 680);
+ CEquipmentPage1* pPage1 = new CEquipmentPage1();
+ pPage1->setEquipment(pEquipment);
+ pPage1->Create(IDD_PAGE_EQUIPMENT1);
+ dlg.addPage(pPage1, "test1");
+
+ CEquipmentPage2* pPage2 = new CEquipmentPage2();
+ pPage2->setEquipment(pEquipment);
+ pPage2->Create(IDD_PAGE_EQUIPMENT2);
+ dlg.addPage(pPage2, "Glass");
+
+ dlg.DoModal();
return true;
};
listener.onRclickEqItem = [&](EQITEM* pItem) -> bool {
ASSERT(pItem);
+
+ CMenu menu, menuCommand;
+ CMenu* pPopupMenu;
+ menu.LoadMenu(IDR_MENU_EQSGRAPH_ITEM);
+ pPopupMenu = menu.GetSubMenu(0);
+
+
+ // 鏄剧ず妯″紡
+ pPopupMenu->EnableMenuItem(ID_EQSGRAPHITEM_SMALL, MF_DISABLED | MF_GRAYED);
+ pPopupMenu->EnableMenuItem(ID_EQSGRAPHITEM_NORMAL, MF_DISABLED | MF_GRAYED);
+ pPopupMenu->EnableMenuItem(ID_EQSGRAPHITEM_LARGE, MF_DISABLED | MF_GRAYED);
+ if (pItem->nShowType == ITEM_SMALL) {
+ pPopupMenu->CheckMenuRadioItem(ID_EQSGRAPHITEM_SMALL, ID_EQSGRAPHITEM_LARGE, ID_EQSGRAPHITEM_SMALL, MF_CHECKED);
+ }
+ else if (pItem->nShowType == ITEM_LARGE) {
+ pPopupMenu->CheckMenuRadioItem(ID_EQSGRAPHITEM_SMALL, ID_EQSGRAPHITEM_LARGE, ID_EQSGRAPHITEM_LARGE, MF_CHECKED);
+ }
+ else {
+ pPopupMenu->CheckMenuRadioItem(ID_EQSGRAPHITEM_SMALL, ID_EQSGRAPHITEM_LARGE, ID_EQSGRAPHITEM_NORMAL, MF_CHECKED);
+ }
+
+
+
+ POINT pt;
+ GetCursorPos(&pt);
+ int nCmd = pPopupMenu->TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_TOPALIGN, pt.x, pt.y, this, NULL);
+ if (nCmd == ID_EQSGRAPHITEM_SMALL) {
+ m_pEqsGraphWnd->SetItemType(pItem, ITEM_SMALL);
+ }
+ else if (nCmd == ID_EQSGRAPHITEM_NORMAL) {
+ m_pEqsGraphWnd->SetItemType(pItem, ITEM_NORMAL);
+ }
+ else if (nCmd == ID_EQSGRAPHITEM_LARGE) {
+ m_pEqsGraphWnd->SetItemType(pItem, ITEM_LARGE);
+ }
+
+
+ // 娴嬭瘯
+ else if (nCmd == ID_EQSGRAPHITEM_TEST1) {
+ SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
+ pEquipment->outputGlass(0);
+ }
+ else if (nCmd == ID_EQSGRAPHITEM_TEST2) {
+ SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
+ pEquipment->outputGlass(1);
+ }
+ else if (nCmd == ID_EQSGRAPHITEM_TEST3) {
+ SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
+ SERVO::CGlass* pGlass = pEquipment->getFrontGlass();
+ if (pGlass != nullptr) {
+ std::string strDescription;
+ SERVO::CPath* pPath = pGlass->getPath();
+ while (pPath != nullptr) {
+ pPath->getDescription(strDescription);
+ AfxMessageBox(strDescription.c_str());
+ pPath = pPath->getNext();
+ }
+ }
+ }
+
+
+ return true;
+ };
+ listener.onSelectEqItem = [&](EQITEM* pItem) -> bool {
+ ASSERT(pItem);
+ SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
+ theApp.m_model.notifyPtr(RX_CODE_SELECT_EQUIPMENT, pEquipment);
+
return true;
};
@@ -206,6 +275,9 @@
std::list<SERVO::CEquipment*>& eqs = theApp.m_model.m_master.getEquipmentList();
for (auto item : eqs) {
EQITEM* pEqItem = m_pEqsGraphWnd->GetItem((DWORD_PTR)item);
+ if (nullptr == pEqItem) {
+ continue;
+ }
strValue.Format(_T("%d"), pEqItem->rect.left);
WritePrivateProfileString(item->getName().c_str(), _T("Left"),
--
Gitblit v1.9.3