而且new的对象,在哪里的delete它,使我在release组件后,组件能够delete这个对象

解决方案 »

  1.   

    你找的是COM组件构造和析构的地方吧?
    可在FinalConstruct里new, 在FinalRelease里delete
      

  2.   

    CComCoClass(类工厂)中的CreateInstance,看看下面CComCoClass源代码就知道了:
    template <class T, const CLSID* pclsid = &CLSID_NULL>
    class CComCoClass
    {
    public:
    DECLARE_CLASSFACTORY()
    DECLARE_AGGREGATABLE(T)
    typedef T _CoClass;
    ......
    template <class Q>
    static HRESULT CreateInstance(IUnknown* punkOuter, Q** pp)
    {
    return T::_CreatorClass::CreateInstance(punkOuter, __uuidof(Q), (void**) pp);
    }
    template <class Q>
    static HRESULT CreateInstance(Q** pp)
    {
    return T::_CreatorClass::CreateInstance(NULL, __uuidof(Q), (void**) pp);
    }
    };
      

  3.   

    我用的是atl,类工厂被atl封装起来了,根本不能让我添加什么啊。我的一个atl工程里有好几个组件。现在每个组件我只能看见一个构造函数,而不像一般的类既能看到构造函数,又能看到析沟函数,比如我的一个组件叫Agent,类名叫CAgent,只看到有一个CAgent(){}。现在我要使组件一经加载后,能够初始化TTS(Text to Speak)功能,然后组件release后能够卸载TTS,我想问的是TTS得加载代码和卸载代码应该放在哪里写?我用的是ATL
      

  4.   

    在组件里加两个接口函数:InitializeTTS()和ReleaseTTS()。组件加载后调用前者,组件释放前调用后者。
      

  5.   

    不能再加接口阿,我是转换已经做好的vb写的组件。我想知道的是ATL做的COM组件在那里可以添加初始化和释放TTS,能够使组件加载和RELEASE时能自动调用这两项
      

  6.   

    调用 CreateInstance 方法,具体见 MSDN 文档