前段时间写的贴子《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: C/C++