我有一个带有32个CComboBoxes的MFC对话框,它们在列表框中都有相同的数据。它需要一段时间才会出现,看起来延迟的一部分是我需要花费时间使用InsertString()将所有数据添加到32个控件。我怎样才能将CComboBox子类化,以便32个实例共享相同的数据?
答案 0 :(得分:1)
填充连击时关闭窗口重绘。 e.g:
m_wndCombo.SetRedraw(FALSE);
// Fill combo here
...
m_wndCombo.SetRedraw(TRUE);
m_wndCombo.Invalidate();
这可能会有所帮助。
答案 1 :(得分:0)
我要尝试的第一件事就是调用“InitStorage”来为字符串预分配内部存储器。 来自MSDN:
// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int n = pmyComboBox->InitStorage(256, 10);
答案 2 :(得分:0)
除了已经说过的内容之外,您还可以在组合框中关闭排序并在插入数据之前预先输出数据。
答案 3 :(得分:0)
您的请求的一个方法是去绘制所有者 - 您将编写一大堆代码,但您不必将数据添加到所有这些代码中。 “CComboBox::DrawItem”
Support.microsoft有关于子类化组合框的文章可能也很有用 “How to subclass CListBox and Cedit inside of CComboBox”
真的有人要问这是否值得付出努力,而且很多都取决于
等