From 8942dacbc2bfaf8aec6a360671de20b0fbf32273 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 26 三月 2025 13:43:32 +0800
Subject: [PATCH] 1.Equipment属性页对话框,准备用于展示Equipment数据,里面的Glass等。

---
 SourceCode/Bond/Servo/EqsGraphWnd.cpp |   47 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/SourceCode/Bond/Servo/EqsGraphWnd.cpp b/SourceCode/Bond/Servo/EqsGraphWnd.cpp
index 46aa8a4..466ca8e 100644
--- a/SourceCode/Bond/Servo/EqsGraphWnd.cpp
+++ b/SourceCode/Bond/Servo/EqsGraphWnd.cpp
@@ -35,13 +35,7 @@
 	m_hWnd = NULL;
 	m_crFrame = GetSysColor(COLOR_WINDOWFRAME);
 	m_crBkgnd = RGB(255, 255, 255);
-	m_listener.onConnectPin = nullptr;
-	m_listener.onCheckConnectPin = nullptr;
-	m_listener.onDisconnectPin = nullptr;
-	m_listener.onDeleteEqItem = nullptr;
-	m_listener.onEqItemPosChanged = nullptr;
-	m_listener.onDblckEqItem = nullptr;
-	m_listener.onRclickEqItem = nullptr;
+	m_listener = {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr };
 	m_crItemBackground[0] = RGB(218, 218, 218);
 	m_crItemBackground[1] = RGB(193, 208, 227);
 	m_crItemFrame[0] = RGB(128, 128, 128);
@@ -492,6 +486,7 @@
 	m_listener.onEqItemPosChanged = listener.onEqItemPosChanged;
 	m_listener.onDblckEqItem = listener.onDblckEqItem;
 	m_listener.onRclickEqItem = listener.onRclickEqItem;
+	m_listener.onSelectEqItem = listener.onSelectEqItem;
 }
 
 BOOL CEqsGraphWnd::SetCurSel(int nSel)
@@ -633,6 +628,27 @@
 void CEqsGraphWnd::SetItemType(EQITEM* pItem, int nType)
 {
 	pItem->nShowType = nType;
+	if (pItem->nShowType == ITEM_SMALL) {
+		pItem->rect.right = pItem->rect.left + ITEM_CX_SMALL;
+		pItem->rect.bottom = pItem->rect.top + ITEM_CY_SMALL;
+	}
+	else if (pItem->nShowType == ITEM_LARGE) {
+		pItem->rect.right = pItem->rect.left + ITEM_CX_LARGE;
+		pItem->rect.bottom = pItem->rect.top + ITEM_CY_LARGE;
+	}
+	else {
+		pItem->rect.right = pItem->rect.left + ITEM_CX_NORMAL;
+		pItem->rect.bottom = pItem->rect.top + ITEM_CY_NORMAL;
+	}
+
+	::InvalidateRect(m_hWnd, &pItem->rect, TRUE);
+}
+
+void CEqsGraphWnd::SetItemPos(EQITEM* pItem, int x, int y)
+{
+	ASSERT(pItem);
+	pItem->rect.left = x;
+	pItem->rect.top = y;
 	if (pItem->nShowType == ITEM_SMALL) {
 		pItem->rect.right = pItem->rect.left + ITEM_CX_SMALL;
 		pItem->rect.bottom = pItem->rect.top + ITEM_CY_SMALL;
@@ -1265,6 +1281,7 @@
 	PIN *pLastPin = m_pCurPin;
 	PIN *pLastSelLineOutPin = m_pSelLineOutPin;
 	BOOL bChanged = FALSE;
+	BOOL bSelectChanged = FALSE;
 	EQITEM* pHitItem = NULL;
 	PIN *pHitPin = NULL;
 	PIN *pPin2 = NULL;
@@ -1288,8 +1305,11 @@
 	}
 
 	if (nRet == HT_ITEM) {
-		m_pCurItem = pHitItem;
-		m_pCurItem->bHighlight = TRUE;
+		if (m_pCurItem != pHitItem) {
+			m_pCurItem = pHitItem;
+			m_pCurItem->bHighlight = TRUE;
+			bSelectChanged = TRUE;
+		}
 	}
 	else if (nRet == HT_PIN) {
 		m_pCurPin = pHitPin;
@@ -1373,6 +1393,8 @@
 
 			ReleaseCapture();
 		ExitLoop:
+			m_nMagneticLinHoz = 0;
+			m_nMagneticLinVer = 0;
 			AfxUnlockTempMaps(FALSE);
 		}
 	}
@@ -1535,6 +1557,13 @@
 	}
 
 
+	if (bSelectChanged) {
+		if (m_listener.onSelectEqItem != nullptr) {
+			m_listener.onSelectEqItem(m_pCurItem);
+		}
+	}
+
+
 	return ::DefWindowProc(m_hWnd, WM_LBUTTONDOWN, wParam, lParam);
 }
 

--
Gitblit v1.9.3