多个CComboBox共享相同的数据

时间:2008-12-04 21:37:23

标签: c++ mfc

我有一个带有32个CComboBoxes的MFC对话框,它们在列表框中都有相同的数据。它需要一段时间才会出现,看起来延迟的一部分是我需要花费时间使用InsertString()将所有数据添加到32个控件。我怎样才能将CComboBox子类化,以便32个实例共享相同的数据?

4 个答案:

答案 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

真的有人要问这是否值得付出努力,而且很多都取决于

  • 列表中的条目数
  • 对话框显示的次数
  • 组合内容的可变性
  • 在其他地方进行视光
    • 在屏幕完成之前不绘图
    • 仅构建一次对话框并重新显示。
    • 使用一个组合但在不同时间在不同位置显示