使用ATL进行COM枚举时按需获取数据

时间:2018-06-12 14:02:49

标签: c++ com atl

使用Enumeration / CComEnum条款在C ++ ATL中进行CComEnumOnSTL相对容易。

这些类的问题是您必须在迭代之前将数据存储在数组或列表中。这对我们来说是不可能的,因为检索列表的所有数据非常耗时,因此我们不希望从底层系统中获取超出必要的数据。而且,我们的COM接口的使用者通常不会迭代整个列表。

这个想法是IEnumXXXX接口的实现有一个指针用于列表中的当前条目。如果消费者想要列表中的下一个条目,它会搜索下一个条目并返回该条目的内容(是的,底层系统可以在许多级别上进行改进,但现在就是这样)

所以我的问题是,是否有任何使用ATL实现IEnumXXXX的好方法,其中从迭代开始就不知道完整数组。或者我必须为每个正在处理的列表(很多列表)实现IEnumXXXX

0 个答案:

没有答案