从ProgId创建一个com组件,是不是只是要注册表里面有相关的信息就可以了。

intfac 2013-09-18 10:25:34
为什么MFC类型,类向导生成的代码里面,如果是支持自动化且持从id创建的类型就会多出来DECLARE_OLECREATE和IMPLEMENT_OLECREATE的代码呢? 像下面这样的:

class Class2 : public CWnd
{
DECLARE_DYNCREATE(Class2)

public:
Class2();
virtual ~Class2();

virtual void OnFinalRelease();

protected:
DECLARE_MESSAGE_MAP()
DECLARE_OLECREATE(Class2)
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
};

让我感到疑惑的地方是,如果ProgID只是要求我们往注册表里面添加一点信息,那么为什么MFC的类向导还要生成特定的宏代码来支持这个特性? 我的理解有什么问题呢?

多谢。
...全文
172 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
redui 2013-09-18
  • 打赏
  • 举报
回复
这个宏就是为了实现组件的类厂,如楼上所言,组件是由类厂创建出来的,类厂是由DLL的标准导出函数公开的,DLL的路径是由注册在注册表中的信息提供的,当然PROGID到组件CLSID的映射也是在注册表中提供的,上述过程反过来就是从PROGID创建出组件的整个流程。
  • 打赏
  • 举报
回复
创建对象是一个复杂的过程 先得到IClassFactory然后再由IClassFactory创建具体对象.

3,245

社区成员

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

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