2008-12-04 156 views
0

我有一个MFC对话框上有32 CComboBoxes它在列表框中都有相同的数据。它花了一段时间才出现,看起来延迟的一部分是我需要花费InsertString()将所有数据添加到32个控件的时间。我如何继承CComboBox,使32个实例共享相同的数据?多个CComboBox共享相同的数据

+0

中有多少项目您添加到每个组合框的

  • ? – grepsedawk 2008-12-04 22:40:29

  • 回答

    1

    填充组合时关闭窗口重绘。例如:

    m_wndCombo.SetRedraw(FALSE); 
    // Fill combo here 
    ... 
    m_wndCombo.SetRedraw(TRUE); 
    m_wndCombo.Invalidate(); 
    

    这可能有帮助。

    +0

    我认为你需要确保你在这之后调用Invalidate。 – grepsedawk 2008-12-04 22:50:42

    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);

    0

    除了已经取得的说,你也可能会关闭在组合框中预先分类和排序的数据在插入前。

    0

    沿着你的请求的方向之一就是让所有者绘制 - 你将会写出一大段代码,但是你不需要将数据添加到所有的代码中。 “CComboBox::DrawItem

    Support.microsoft对本文有子类组合框可能也有兴趣 “How to subclass CListBox and Cedit inside of CComboBox

    真的要问一下,如果它是值得的,并且那取决于很多之类的东西在列表中

    • 的条目数
    • 次数对话框将显示
    • 变性融为一体博内容
    • optomising别处
      • 不拉丝,直至完成整个屏幕的
      • 只有建立对话一次,并重新显示它。使用一个组合,但显示它在不同地点不同时间
    相关问题