ATL做的COM组件在那里new一个对象,能够使它能在组件装载后自动实例化 而且new的对象,在哪里的delete它,使我在release组件后,组件能够delete这个对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你找的是COM组件构造和析构的地方吧?可在FinalConstruct里new, 在FinalRelease里delete 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); }}; 我用的是atl,类工厂被atl封装起来了,根本不能让我添加什么啊。我的一个atl工程里有好几个组件。现在每个组件我只能看见一个构造函数,而不像一般的类既能看到构造函数,又能看到析沟函数,比如我的一个组件叫Agent,类名叫CAgent,只看到有一个CAgent(){}。现在我要使组件一经加载后,能够初始化TTS(Text to Speak)功能,然后组件release后能够卸载TTS,我想问的是TTS得加载代码和卸载代码应该放在哪里写?我用的是ATL 在组件里加两个接口函数:InitializeTTS()和ReleaseTTS()。组件加载后调用前者,组件释放前调用后者。 不能再加接口阿,我是转换已经做好的vb写的组件。我想知道的是ATL做的COM组件在那里可以添加初始化和释放TTS,能够使组件加载和RELEASE时能自动调用这两项 调用 CreateInstance 方法,具体见 MSDN 文档 MFC中如何中断单击void函数 非模态对话框覆盖父窗口的问题。 如何实现禁止某IP地址 请教达人一个压缩的问题... 现在服务器忙,不能搜索帖子,想问个简单的问题:如何在程序运行的时候改变窗口尺寸? 如何给CRichedi添加背景图片 如何找出摄像头的两帧图像中不同的区域? 请教**有关接口参数问题** 关于工具栏的问题! ?求助!!请问程序员考试什么时候报名????? 问一个关于生成exe文件的问题!! 如何根据需要按行显示一个文本文件,并根据需要可以使某些行的颜色(字体或背景)改变?
可在FinalConstruct里new, 在FinalRelease里delete
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);
}
};