[問題] Windows ListView 控制項的客製化問題...

看板Programming作者 (= ̄ω ̄=)時間14年前 (2010/12/12 14:46), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
本人正在以 C 語言搭配 Windows API 設計視窗程式,沒有使用其他 GUI framework , 當使用 ListView 實作縮圖預覽的時候遇到幾個問題: 1. ListView 裡面被選擇 (selected) 的項目會有 highlight 效果, 就算設定了 LVS_EX_BORDERSELECT 樣式也會在圖示四周產生框線,不知有沒有方 法讓 highlight 效果不要出現? 2. 我希望 client 區域的左邊保留一定寬度、第一列項目的上方保留一定高度的空白 區域,使用 ListView_SetWorkAreas 巨集來設定 WorkArea 似乎可以達到效果, 但是只要一拉動卷軸、新增或刪除項目,或是改變 ListView 的大小效果就會消失。 3. 圖示下面的 label 會依照文字的長度而自動調整大小,有沒有辦法讓 label 固定 寬度,比如說固定成和縮圖一樣寬,而且只顯示一列? 通過攔截 ListView 的 NM_CUSTOMDRAW notification ,我可以對每一個項目的繪製 進行客製化,但是以上幾個問題卻會妨礙較精細的操作,希望可以解決。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.82.140.188

12/13 10:18, , 1F
第一個問題已經解決,方法是在 paint cycle
12/13 10:18, 1F

12/13 10:19, , 2F
中的 CDDS_ITEMPREPAINT 階段把 item state
12/13 10:19, 2F

12/13 10:20, , 3F
的 LVIS_SELECTED 旗標設為 0 ,到了
12/13 10:20, 3F

12/13 10:21, , 4F
CDDS_ITEMPOSTPAINT 階段再設定回去。
12/13 10:21, 4F
文章代碼(AID): #1D16_Np3 (Programming)
文章代碼(AID): #1D16_Np3 (Programming)