
图 ATLEnum-02
VC对于添加的类的默认属性设置是支持双接口的,我们将其改为自定义接口,免去IDispatch接口实现的诸多麻烦。
3、 我们假设vector是全局性的,并且在ATLEnum类的构造函数中被初始化。打开ATLEnum.h文件,添加头文件包含:
#include <vector>
添加vector<VARIANT>声明:
std::vector<VARIANT> test_vec ;
改写CATLEnum构造函数如下:
CATLEnum()
{
if ( test_vec.empty() )
{
VARIANT var ;
VariantInit( &var ) ;
var.vt = VT_I4 ;
var.llVal = 1 ;
test_vec.push_back( var ) ;
var.llVal = 2 ;
test_vec.push_back( var ) ;
}
}
使得CATLEnum在构造时可以初始化vector。
4、 按照下图说明给CATLEnum添加一个名为GetEnum()的方法,用来向客户端提供枚举器:

图 ATLEnum-03

图 ATLEnum-04
5、 从MSDN附带的ATL Sample中找到ATLCollections工程,copy其中的Reuse文件夹到我们的ATLEnum1工程的文件夹中。打开ATLEnum.cpp,添加包含文件:
#include "../Reuse/VCUE_Collection.h"
列出文章最开始所列出的策略类: