![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
com
文章平均质量分 77
newlist
这个作者很懒,什么都没留下…
展开
-
ATL对象多线程访问
COM对象必须在套间中运行。套间分为单线程套间和多线程套间。在单线程套间中,套间保证COM对象实例仅有一个线程可以访问,而在多线程套间中, COM对象实例可同时被多个线程访问。因此,在多线程套间中执行的COM对象必须解决多线程访问的同步和冲突等线程安全相关问题。引用计数器管理的实现——CComObjectRootExATL使用CComObjectRootEx类来实现对COM对象计数器的管理转载 2012-07-09 11:47:19 · 706 阅读 · 0 评论 -
COM注册什么时候需要注册APPID .
COM 7.0以后有这样一个宏DECLARE_REGISTRY_APPID_RESOURCEID 在VS03以后的版本中,ATL工程中会自动添加这样的代码class CXXModule : public CAtlDllModuleT{public : DECLARE_LIBID(LIBID_xinstallerLib) DECLARE_REGISTRY_APPID_RE转载 2012-07-24 17:53:04 · 1769 阅读 · 0 评论 -
CoCreateInstance
CoCreateInstance 创建组件的最简单的方法是使用CoCreateInstance函数。在COM库中包含一个用于创建组件的名为CoCreateInstance的函数。此函数需要一个CLSID参数,在此基础上创建相应组件的一个实例,并返回此组件的某个接口。 CoCreateInstance 的声明HRESULT _stdcall CoCreateI转载 2012-07-24 10:45:46 · 708 阅读 · 0 评论 -
ATL_NO_VTABLE详解 .
我们可以注意到在用ATL编写COM组件时,在类前面都有一个宏ATL_NO_VTABLE,那么这个宏到底有什么作用呢?这个宏的定义如下: #define __declspec(novtable) ATL_NO_VTABLE;下面这段是MSDN中对这个宏的描述: This form of _declspec can be applied to any class declaration转载 2012-07-23 11:51:33 · 663 阅读 · 0 评论 -
ATL 的CComCoClass .
这个类是ATL中Com对象的核心,它让你的类轻松的实现类厂的支持和被聚合的支持,所有这一切,就两个宏#define DECLARE_CLASSFACTORY()DECLARE_CLASSFACTORY_EX(ATL::CComClassFactory) #define DECLARE_AGGREGATABLE(x) public:/ typedef AT转载 2012-07-23 14:47:22 · 3946 阅读 · 0 评论 -
CoTaskMemAlloc
CoTaskMemAlloc Function分配一块任务内存区。分配方法与IMalloc::Alloc 相同。语法C++LPVOID CoTaskMemAlloc(__in SIZE_T cb);参数cb [in] 所要分配的内存大小(单位字节)返回值如果成功,返回分配好的内存块,否则返回NULL.备注该函数使用默认的分配器来对内存进行分配。没必要转载 2012-07-24 14:16:05 · 3118 阅读 · 0 评论 -
put_DocHostFlags
IE控件是否支持XP的Theme,说白了只是一个标记(Flag)而已。如果你使用了ATL的CAxWindow,那么打开Theme支持,只需要: CAxWindow m_ax; // 创建的IE控件。 CComPtr spHost; m_ax.QueryHost(&spHost); spHost->put_DocHostFlags(转载 2012-07-24 13:43:16 · 963 阅读 · 0 评论 -
CComObjectRootEx类 .
该类处理聚合和非聚合对象的对象引用记数管理。对于非聚合对象它拥有对象的引用记数对于聚合对象它拥有一个指向外部unknown的指针。对于聚合对象来说,CComOjbectRootEx可以用来处理内部对象构造失败并保护外部对象在内部接口被释放或删除的时候不被删除。templateclass CComObjectRootEx : public CComObjectRootBase 参转载 2012-07-23 14:22:02 · 2325 阅读 · 0 评论 -
COM接口映射表 .
CComObjectRootObjectBase中以表驱动的方式对接口的查询作了一个内部的实现,即InternalQueryInterface()。所以在创建基于ATL的COM类时,需要创建一个包含所有实现接口的映射表。1. BEGIN_COM_MAP、END_COM_MAP、COM_INTERFACE_ENTRY与COM_INTERFACE_ENTRY2宏ATL提供了BEGIN_COM_转载 2012-07-24 09:07:49 · 1523 阅读 · 0 评论 -
VC6重载BeforeNavigate2和DocumentComplete函数方法 .
众所周知BeforeNavigate2和DocumentComplete函数是IE未公开的接口,如果你做基于IE的二次开发的话,而且很不幸因为种种原因只能用VC6的话,那么本文将帮助你,告诉你如何正确识别网页下载完毕以及在网页未下载完成的时候正确识别真正的url重载这两个函数的方法是:第一步在chtmlxxxview.h文件添加 void DocumentComple转载 2012-07-23 11:53:00 · 2372 阅读 · 0 评论 -
支持 IDispEventImpl - (COM事件的使用) .
支持 IDispEventImpl模板类 IDispEventImpl 可用于在 ATL 类中提供连接点接收器支持。连接点接收器使类得以处理从外部 COM 对象引发的事件。这些连接点接收器是用事件接收映射(由类提供)来映射的。若要正确地实现类的连接点接收器,必须完成以下步骤: 为每个外部对象导入类型库 声明 IDispEventImpl 接口 声明事件接收映射转载 2012-07-23 09:21:55 · 2103 阅读 · 0 评论 -
DLL入口点函数DllMain .
每个DLL都可以有一个入口点函数DllMain,系统会在不同的时刻调用此函数。以下是DllMain的一般形式:BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to DLL module DWORD fdwReason, // reason for calling function LPVOID lpR转载 2012-07-25 10:34:43 · 1344 阅读 · 0 评论