2

我试图找出一种在更改对齐样式(LVS_ALIGNTOP/ LVS_ALIGNLEFT)后刷新/更新/重绘列表控件的方法。

如果我将样式从图标/小模式更改为其他样式,然后再返回,它有时会起作用(仅在单击时,以编程方式更改似乎即使有延迟也不起作用)。即便如此,这充其量是相当笨拙的(更不用说丑陋/闪烁),所以我更愿意找到更好(更合适,更正确?)的方法。

我尝试了列表控件的UpdateWindow, RedrawWindow, Invalidate, RedrawItems, Update... 除了更改显示模式之外似乎没有任何效果。

4

3 回答 3

1

我已经成功使用 CListCtrl.Update() 方法解决了这个问题。

IE:

for (int z=0;z<m_listCtrl.GetItemCount();z++)
{
    m_listCtrl.Update(z);
}
于 2013-07-17T01:35:39.507 回答
1

发现你必须做的,

m_listCtrl.Arrange(LVA_DEFAULT);

您可能需要更改LVA_DEFAULT您的特定要求。看到这个

于 2015-07-24T12:39:12.983 回答
0
RedrawItems(0, GetItemCount() - 1);
UpdateWindow();
于 2012-04-02T10:28:06.527 回答