Vb6 有没有更快的方法将18k项目加载到组合下拉列表中?
我必须修复一些旧的VB6代码,其中一个问题是应用程序在启动时将18k项加载到3个不同的组合下拉列表中。不用说,这需要很长时间。所以我从使用.AddItem方法改为使用SendMessageAPI。这大大缩短了时间(大约60%),但每次下载仍然需要1.4秒才能加载,因此启动时间仍然是5秒 我还试图说服用户不要把所有的18k都放在那里,但他们坚持所有条目都必须放在那里以便快速查找 我的问题Vb6 有没有更快的方法将18k项目加载到组合下拉列表中?,vb6,Vb6,我必须修复一些旧的VB6代码,其中一个问题是应用程序在启动时将18k项加载到3个不同的组合下拉列表中。不用说,这需要很长时间。所以我从使用.AddItem方法改为使用SendMessageAPI。这大大缩短了时间(大约60%),但每次下载仍然需要1.4秒才能加载,因此启动时间仍然是5秒 我还试图说服用户不要把所有的18k都放在那里,但他们坚持所有条目都必须放在那里以便快速查找 我的问题 有没有更快的方法来装载这么多的物品 无论如何,只是在3个组合框之间共享数据,而不是在每个组合框中添加18k 任
最后-将这些组合框填充为3个单独的线程在加载过程中设置为false可节省大量时间。@AngryHacker您可以使用CreateThread Win32 API,但请记住VB6调试器无法处理多个线程。但所有windows UI不都需要在同一线程上吗?我会在同一表单上填充3个组合。~CB_INITSTORAGE~确实有点帮助。每个组合节省0.15秒,这非常重要。@AngryHacker windows中没有单独的UI线程,您可以从任何线程更新控件,只需确保这些更新不冲突(这不是您的情况)@Ilya Bursov:有一个创建窗口的线程,调度其消息的线程。当在单个线程上创建所有应用程序窗口时,该线程称为进程的UI线程。VB6(和大多数其他应用程序)就是这种情况。最快的加载时间是一个没有
CBS\u hastrings
的所有者绘制的组合框。您只需将这些18k条目保存在一个数组中,并根据需要绘制它们。问题是在VB6中创建这样的组合框。