现象:在使用WTL做CListBox子类化时,使用 ModifyStyle(0, LBS_OWNERDRAWFIXED)不起作用;
原因:并不是所有的风格都可以动态利用ModifyStyle/ModifyStyleEx()函数增加和去除,有些风格比如 LBS_HASSTRINGS | LBS_OWNERDRAWFIXED| LBS_OWNERDRAWVARIABLE 就只能在创建窗口的时候指定(其后再增加是无效的),也就是说你只能创建的之前指定。
解决:自己动态创建控件,或在待子类化的ListBox控件中指定属性(如LBS_HASSTRINGS | LBS_OWNERDRAWFIXED| LBS_OWNERDRAWVARIABLE )
附:
1) code project中的解释
It is not possible to change these styles at runtime even though ModifyStyle() may give the impression it does. If you want turn the Sort style&n

在使用WTL的CListBox子类化过程中遇到问题,尝试使用ModifyStyle(0, LBS_OWNERDRAWFIXED)修改样式无效。原因是某些风格如LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE只能在控件创建时设定,后续动态修改不会生效。解决方法包括动态创建控件或在创建ListBox时直接指定所需风格。参考Code Project的解释,对于需要动态切换的风格,可能需要新建并替换控件,或者使用两个覆盖的ListBox来实现。"
114955216,10538668,使用Java生成Outlook日程:多事件.ICS文件示例,"['Java开发', '日历同步', 'Outlook集成', '数据格式', '赛事管理']
最低0.47元/天 解锁文章
1008

被折叠的 条评论
为什么被折叠?



