精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
static CPolyTool polytool;
CPoint CDrawTool::c_down;
UINT CDrawTool::c_nDownFlags;
CPoint CDrawTool::c_last;
DrawShape CDrawTool:c_drawShape=selection;
CPtrList CDrawTool::c_tools;定义是这样的。
这个c_tools是个什么量啊?CPtrList应该是一堆指针的集合?这个初始化是什么意思?
CPtrList应该是一堆指针的集合,这个理解正确。这样定义一个static CSelectTool selectTool;对象,则会向c_tools集合里添加一个指针。集合里有指针,才能查找。
添加指针在构造函数里进行的。
所以这些就象自动化实现的一样。
初学者理解类型时,可以从名称里直观获取信息,这里Ptr代表指针,List是列表,结合起来就是指针列表。
要充分掌握基本理论,才好理解代码。静态成员在源文件里要定义才可以使用,这样的成员在类头文件里只声明是不能通过编译链接的。
MFC推出的早,它对STL功能有自己的实现,它的实现和后来标准STL机制完全不一样,比如MFC里有POSITION,但是在标准STL里就用了迭代器,这2者都对初学者不太友好,不好理解。其实都是指针的变种。