Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MFC中的虚拟组合框_Mfc - Fatal编程技术网

MFC中的虚拟组合框

MFC中的虚拟组合框,mfc,Mfc,我在一个选项卡页面中有10个CmboBox,我想将10k数据加载到每个CmboBox 加载选项卡页需要更多的时间 在MFC中,如何实现类似虚拟列表控件的虚拟组合框 我需要在“加载”选项卡的组合框中设置默认选择 你能不能请人给我一些想法 谢谢WinApi中没有这样的虚拟组合框,但是您有一些优化 如果需要,仅将完整数据加载到框中。因此,只有当您获得CBN\u下拉列表事件时,您才能用所有项目填充框。否则,只需插入一个选定项。 此方法有一个缺点,即关闭组合中的上下光标不起作用 此外,您还可以仅在框接收到

我在一个选项卡页面中有10个CmboBox,我想将10k数据加载到每个CmboBox

加载选项卡页需要更多的时间

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

我需要在“加载”选项卡的组合框中设置默认选择

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


谢谢

WinApi中没有这样的虚拟组合框,但是您有一些优化

如果需要,仅将完整数据加载到框中。因此,只有当您获得
CBN\u下拉列表
事件时,您才能用所有项目填充框。否则,只需插入一个选定项。 此方法有一个缺点,即关闭组合中的上下光标不起作用

此外,您还可以仅在框接收到焦点时填充框。此外,在这种情况下,您只需使用当前选定的项目填充框

获得的最佳结果是使用所有者绘制组合框,而不使用CBS\u Hastring
CB_ADDSTRING
接收指向数据的指针。在
DrawItem
中,使用此指针进行绘图


您仍然需要向每个框中添加10k项,但是没有字符串管理,并且如果没有内存分配,框的速度非常快。

您是否正在尝试填充页面的
OnInitDialog
上的所有10个组合框?如果是这样,您可以对组合框进行子类化,并延迟填充它们,直到它们的
SetFocus
。我以前在一个几乎相同的场景中做过,效果很好。acraig5075为您提供了一个很好的解决方案。。。另一个是使用这个控件,它使用派生的CListCtrl,您可以将它用作虚拟:@acraig5075,如果我在combobox的setfocus上加载数据,那么如何通过OnInitDialog上的SelectString()设置combobox的默认文本。设置默认选择是一项要求,从阅读问题中并不明显。如果你需要,你应该回答你的问题。我的直接反应是重新思考基本设计。一个包含10K个项目的组合框似乎很难使用,这几乎是在滥用你的用户。