單文檔多視圖分割,需在 CListView 中顯示類似有道雲筆記的多行摘要,行高較大,標準 ListView 無法直接設置行高。
CListView 封裝 SysListView32,行高由系統根據字體/圖標自動計算。Owner Draw(LVS_OWNERDRAWFIXED)自繪,但需處理 WM_MEASUREITEM/WM_DRAWITEM,對初學者極具挑戰。LVS_OWNERDATA) 僅解決數據量大問題,不解決行高自定義。BCGSuite 是專業 MFC 擴展庫,提供 CBCGPListCtrl 等高級控件,原生支援:
| 方案 | 難度 | 效果 | 維護性 |
|---|---|---|---|
| 原生 Owner Draw | 高 | 可控 | 低(代碼量大) |
| BCGSuite | 低 | 專業 | 高(封裝完善) |
| CXTPReportControl (Codejock) | 中 | 專業 | 中 |
| 自繪 CListCtrl 子類化 | 高 | 可控 | 低 |
CListView 派生類改為 CBCGPListView,或直接用 CBCGPListCtrl 嵌入對話框。pList->EnableRowHeight(TRUE);MFC 原生 ListView 不支援靈活行高,自繪成本極高。專案預算允許時,引入 BCGSuite 等成熟庫是性價比最高的選擇,能以極少代碼實現類 Office 的高級列表體驗。