gpt4 book ai didi

c++ - 如何(快速)在 C++ (MFC) 中填充 CListCtrl?

转载 作者:可可西里 更新时间:2023-11-01 18:04:48 26 4
gpt4 key购买 nike

在我的应用程序中,我有几个 CListCtrl 表。我用带有 for 循环的数组中的数据填充/刷新它们。在循环内,我必须对显示值的方式进行一些调整,因此根本不可能以任何方式进行数据绑定(bind)。

真正的问题是填充表格所花费的时间,因为它是逐行重绘的。如果我在控件填充时将其变为不可见,并在循环完成后使其再次可见,那么整个方法会快得多!

现在我正在寻找一种方法来阻止控件在完全填充之前重新绘制。或者任何其他加快速度的方法。

最佳答案

查看 SetRedraw 方法。在开始填充控件之前调用 SetRedraw(FALSE),在完成时调用 SetRedraw(TRUE)。

我还建议为此使用 RAII:

class CFreezeRedraw
{
public:
CFreezeRedraw(CWnd & wnd) : m_Wnd(wnd) { m_Wnd.SetRedraw(FALSE); }
~CFreezeRedraw() { m_Wnd.SetRedraw(TRUE); }
private:
CWnd & m_Wnd;
};

然后像这样使用:

CFreezeRedraw freezeRedraw(myListCtrl);
//... populate control ...

如果您希望 freezeRedraw 在函数结束之前超出范围,您可以在填充列表控件的代码周围创建一个人工 block 。

关于c++ - 如何(快速)在 C++ (MFC) 中填充 CListCtrl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1109522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com