From 6dc80508b1c0f431007f8a8c947c152ec00c3d15 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期一, 08 九月 2025 09:24:05 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang

---
 SourceCode/Bond/Servo/CExpandableListCtrl.cpp |   43 +++++++++++++++++++++++++++++++++----------
 1 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/SourceCode/Bond/Servo/CExpandableListCtrl.cpp b/SourceCode/Bond/Servo/CExpandableListCtrl.cpp
index 00bdf28..11470ce 100644
--- a/SourceCode/Bond/Servo/CExpandableListCtrl.cpp
+++ b/SourceCode/Bond/Servo/CExpandableListCtrl.cpp
@@ -19,16 +19,18 @@
 
     // 鎶ヨ〃椋庢牸鍒椾妇渚�
     SetExtendedStyle(GetExtendedStyle()
-        | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES);
-
-    // 绀轰緥鍒楋紙鍙湪澶栭儴璁剧疆锛�
-    if (GetHeaderCtrl() == nullptr || GetHeaderCtrl()->GetItemCount() == 0) {
-        InsertColumn(0, _T("鍚嶇О"), LVCFMT_LEFT, 260);
-        InsertColumn(1, _T("鐘舵��"), LVCFMT_LEFT, 120);
-        InsertColumn(2, _T("鎻忚堪"), LVCFMT_LEFT, 260);
-    }
+        | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES | LVS_EX_DOUBLEBUFFER);
 
     return 0;
+}
+
+void CExpandableListCtrl::PreSubclassWindow()
+{
+    // 鎶ヨ〃椋庢牸鍒椾妇渚�
+    SetExtendedStyle(GetExtendedStyle()
+        | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES | LVS_EX_DOUBLEBUFFER);
+
+    CListCtrl::PreSubclassWindow();
 }
 
 CExpandableListCtrl::Node* CExpandableListCtrl::InsertRoot(const std::vector<CString>& cols)
@@ -273,6 +275,29 @@
             CString txt0 = n->cols.empty() ? _T("") : n->cols[0];
             pDC->DrawText(txt0, textRc, DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_END_ELLIPSIS);
 
+
+            // 鈥斺�� 鐢诲畬涓夎涓庢枃鏈箣鍚庯紝琛ヤ竴鏉¤琛岀殑搴曢儴妯悜缃戞牸绾� 鈥斺��
+            // 浠呭綋寮�鍚簡 LVS_EX_GRIDLINES 鎵嶇粯鍒�
+            if (GetExtendedStyle() & LVS_EX_GRIDLINES)
+            {
+                // 鐢ㄦ暣琛� bounds锛屼繚璇佹í绾胯疮绌挎墍鏈夊垪鐨勫彲瑙佸搴�
+                CRect rcRow;
+                GetSubItemRect(row, 0, LVIR_BOUNDS, rcRow);
+
+                // 搴曡竟 y 鍧愭爣锛堜笌绯荤粺缃戞牸绾垮榻愶級
+                const int y = rcRow.bottom - 1;
+
+                // 棰滆壊涓庣郴缁熼鏍兼帴杩戯紱鑻ヨ寰楀亸娴咃紝鍙崲 COLOR_3DSHADOW
+                CPen pen(PS_SOLID, 1, GetSysColor(COLOR_3DLIGHT));
+                CPen* oldPen = pDC->SelectObject(&pen);
+
+                // 妯嚎浠庤宸﹀埌琛屽彸锛堝綋鍓嶅彲瑙佸尯鍩燂級
+                pDC->MoveTo(rcRow.left, y);
+                pDC->LineTo(rcRow.right, y);
+
+                pDC->SelectObject(oldPen);
+            }
+
             *pResult = CDRF_SKIPDEFAULT;
             return;
         }
@@ -286,5 +311,3 @@
 
     *pResult = CDRF_DODEFAULT;
 }
-
-

--
Gitblit v1.9.3