MFC中的虚拟组合框

时间:2018-08-03 05:44:27

标签: mfc

我在一个标签页中有10个CComboBox,我想向每个组合框加载10k数据吗?

加载标签页需要花费更多时间。

在MFC中如何实现类似于虚拟列表控件的虚拟组合框?

我需要在“加载”标签上的组合框中设置默认选择。

你能不能请别人给我一些想法?

谢谢

1 个答案:

答案 0 :(得分:1)

WinApi中没有这样的虚拟组合框,但是您进行了服务器优化。

仅在需要时将完整数据加载到框中。因此,只有当您收到CBN_DROPDOWN事件时,才用所有项目填充该框。否则,您只需插入一个选定的项目。 这种方法的缺点是无法在封闭的组合中向上移动光标。

此外,仅当框获得焦点时才可以填充该框。同样,在这种情况下,您只需用当前选定的项目填充框。

获得的最佳结果是使用所有者绘图组合框,而不使用CBS_HASSTRINGCB_ADDSTRING收到一个指向您数据的指针。在DrawItem中,您可以使用此指针进行绘制。

您仍然需要向每个框中添加1万个项目,但是没有字符串管理,并且在没有这种内存分配的情况下,该框确实非常快。