CListCtrl在LVS_SMALLICON模式下显示不正常的解决办法

前段时间写的贴子《CListCtrl在LVS_ICON和LVS_SMALLICON模式下的显示问题》解决了CListCtrl在LVS_ICON和LVS_SMALLICON两种模式下插入记录不正常显示的问题,但有个问题当时没有发现:在LVS_SMALLICON模式下,当数据点的标签比较长时,左边的标签就覆盖了右边的图标和标签,如下图:

试了好几种方法:
m_lvwAlarmList.Arrange(LVA_DEFAULT);
m_lvwAlarmList.RedrawItems(0, m_lvwAlarmList.GetItemCount());
m_lvwAlarmList.RedrawWindow();
m_lvwAlarmList.UpdateWindow();

m_lvwAlarmList.ModifyStyle(LVS_TYPEMASK, LVS_ICON, 0);
m_lvwAlarmList.ModifyStyle(LVS_TYPEMASK, LVS_SMALLICON, 0);
只有最后两句一起用时才有效,只用上面的4句仍然无效。

最后通过观察资源管理器的情况,使用LVS_LIST来替找LVS_SMALLICON来解决这个问题的:
把“m_lvwAlarmList.ModifyStyle(LVS_TYPEMASK, LVS_SMALLICON, 0);”改成“m_lvwAlarmList.ModifyStyle(LVS_TYPEMASK, LVS_LIST, 0);”。

发贴的链接与上回的贴子是同一个。

Tags:

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。