WEB开发网
开发学院软件开发VC 组件对象模型与ATL实现 阅读

组件对象模型与ATL实现

 2010-09-04 20:48:02 来源:WEB开发网   
核心提示:Canvas.cpp的CreateObject例子使用简单的字符串比较,实际应用中,组件对象模型与ATL实现(10),可以采用hash map等加快对象查找的速度,所以,你可以根据索引(目前是以1为基数)得到图层对象(Layer)的引用,从Layer对象得到图形集合对象(Shapes),COM对象有时候也要用其它方法创

Canvas.cpp的CreateObject例子使用简单的字符串比较,实际应用中,可以采用hash map等加快对象查找的速度。所以,COM对象有时候也要用其它方法创建为好!

同样的方法,给Layer对象添加属性,以得到 Shapes集合属性:

// MapLib.idl : MapLib 的IDL 源
...

interface ILayer : IDispatch{
     [propget,id(1),helpstring("得到图形集合对象的引用")] HRESULT Shapes([out, retval] IShapes** ppRef);
};

添加实现代码到Layer.h中,你只需注意加粗的文字:

// Layer.h : CLayer 的声明
...
#include "Shapes.h"

// CLayer
class ATL_NO_VTABLE CLayer :
...
{
public:
     CComPtr<IShapes>   m_spShapes;

     CLayer()
     {
     }

...

     HRESULT FinalConstruct()
    {
        return CShapes::CreateInstance(&m_spShapes);
    // return S_OK;
    }

     void FinalRelease()
     {
     }

public:
    STDMETHODIMP get_Shapes(IShapes** ppRef)
    {
        return m_spShapes.CopyTo(ppRef);
    }
};

现在,你的对象模型就建好了。你可以从Canvas根对象得到图层集合(Layers)对象,你还可以向Layers中添加图层。你可以根据索引(目前是以1为基数)得到图层对象(Layer)的引用。从Layer对象得到图形集合对象(Shapes),并进一步操纵Shapes。

上一页  5 6 7 8 9 10 11 12 13  下一页

Tags:组件 对象 模型

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接