ModifyStyle()调用不起作用

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

现象:在使用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值