作者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
1F:→ uziel:第一个问题已经解决,方法是在 paint cycle 111.82.61.207 12/13 10:18
2F:→ uziel:中的 CDDS_ITEMPREPAINT 阶段把 item state 111.82.61.207 12/13 10:19
3F:→ uziel:的 LVIS_SELECTED 旗标设为 0 ,到了 111.82.61.207 12/13 10:20
4F:→ uziel:CDDS_ITEMPOSTPAINT 阶段再设定回去。 111.82.61.207 12/13 10:21