作者uziel (= ̄ω ̄=)
看板Programming
標題[問題] Windows ListView 控制項的客製化問題...
時間Sun Dec 12 14:46:44 2010
本人正在以 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
→ uziel:第一個問題已經解決,方法是在 paint cycle 111.82.61.207 12/13 10:18
→ uziel:中的 CDDS_ITEMPREPAINT 階段把 item state 111.82.61.207 12/13 10:19
→ uziel:的 LVIS_SELECTED 旗標設為 0 ,到了 111.82.61.207 12/13 10:20
→ uziel:CDDS_ITEMPOSTPAINT 階段再設定回去。 111.82.61.207 12/13 10:21