From ba50ece48a4b95563031f1dacffd3e04f89d952f Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 21 八月 2025 05:25:41 +0800
Subject: [PATCH] 1.完善可折叠列表;
---
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