关于COM的基础的问题

dayu_top 2002-12-05 06:50:05
请问
如果我要从COleObjectFactroy派生一个类工厂,并且要自定义DECLARE_OLECREATE()
和IMPLMENT_OLECREATE()宏应该怎么做?
...全文
44 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdkkurt 2002-12-05
  • 打赏
  • 举报
回复
hoho,你怎么把源码都给贴上去了?
paul2002 2002-12-05
  • 打赏
  • 举报
回复
#define BEGIN_OLEFACTORY(class_name) \
protected: \
class class_name##Factory : public COleObjectFactoryEx \
{ \
public: \
class_name##Factory(REFCLSID clsid, CRuntimeClass* pRuntimeClass, \
BOOL bMultiInstance, LPCTSTR lpszProgID) : \
COleObjectFactoryEx(clsid, pRuntimeClass, bMultiInstance, \
lpszProgID) {} \
virtual BOOL UpdateRegistry(BOOL);// overload UpdateRegistry

// add your function here

#define END_OLEFACTORY(class_name) \
}; \
friend class class_name##Factory; \
static AFX_DATA class_name##Factory factory; \
public: \
static AFX_DATA const GUID guid; \
virtual HRESULT GetClassID(LPCLSID pclsid);

#define DECLARE_OLECREATE_EX(class_name) \
BEGIN_OLEFACTORY(class_name) \
END_OLEFACTORY(class_name)

#define IMPLEMENT_OLECREATE_EX(class_name, external_name, \
l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
const TCHAR _szProgID_##class_name[] = _T(external_name); \
AFX_DATADEF class_name::class_name##Factory class_name::factory( \
class_name::guid, RUNTIME_CLASS(class_name), FALSE, \
_szProgID_##class_name); \
const AFX_DATADEF GUID class_name::guid = \
{ l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
HRESULT class_name::GetClassID(LPCLSID pclsid) \
{ *pclsid = guid; return NOERROR; }

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧