自动更新CComboBox

问题描述 投票:0回答:2

我的

CComboBox
上有一个
CDialog
,其中包含文件名列表。

文件所在的文件夹有时会更新。这意味着:

  • 需要将文件添加到列表中。
  • 需要从列表中删除文件。

处理这个问题的最佳方法是什么?

  1. 使用
    OnKickIdle
  2. 处理组合框
    OnDropDown
    事件?

感谢指导。我担心对应用程序的性能影响。

visual-c++ combobox mfc
2个回答
1
投票

嗯,每种解决方案都有其优点和缺点。我的想法:

我不会使用

OnKickIdle()
,因为它相当“浪费”;这是一个真正“一直”触发的事件,即使是由于鼠标移动、悬停、按键等。在
Beep(1000,30)
中添加一个
OnKickIdle()
命令来检查它被调用了多少次,并问问自己是否希望您的应用程序经常扫描目录。即使下拉列表展开,您也可能会触发更新。您可以改用一些计时器,但这只是古老的“轮询”技术。

扫描

OnDropDown()
中的文件夹有一个明显的缺点,即在用户期望 UI 响应的时刻执行相对昂贵的操作。但是,如果文件夹驻留在同一台计算机上的 SSD 中并且文件数量很少,则响应时间绝对可以接受。如果文件数量很大和/或文件夹位于网络卷上,情况可能会有所不同。

如果您愿意为此付出更多的努力,您可以考虑目录更改通知。它可以在单独的线程中实现,这将使用户感觉不到更新过程。


0
投票

你好, 您可以考虑在文件系统上挂接, 不是组合框。 也许操作也需要同步。 我通过互联网发现了一个功能: API

© www.soinside.com 2019 - 2024. All rights reserved.