
COM
文章平均质量分 64
HiRuyue
这个作者很懒,什么都没留下…
展开
-
VC 在多线程中调用Exce问题
1) 每个线程必须先::CoInitialize(NULL);,退出时必须::UnCoInitialize(NULL);, 2) pDlg->m_pXlOper,即线程使用m_pXl内Excel对象,必须遵守COM/COM+规范,简单说,对象接口指针必须遵守一个规范:计数增一,退出时计数减一 3)多线程共享接口指针,还有很多要注意的地方,比如套间等,不能象C/C++程序自己设计的对象指针那么简原创 2014-01-15 09:10:02 · 1184 阅读 · 0 评论 -
AfxOleInit()/CoInitialize()/CoInitializeEx()
具体可见msdn开发人员中心: (一)AfxOleInit() 1、函数说明:Initializes OLE support for the application. 2、函数原型: BOOL AFXAPI AfxOleInit( ); Return Value Nonzero if successful; 0 if initialization转载 2014-01-15 09:05:18 · 1231 阅读 · 0 评论 -
CoInitialize和CoInitializeEx的区别
CoInitialize、CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象,原因是程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。 有哪些方式呢?单线程和多线程。 CoInitialize指明以单线程方式创建。 CoInitializeEx可以指转载 2014-01-15 08:51:30 · 4135 阅读 · 0 评论 -
CoInitialize浅析一
大家都知道程序中若要使用COM组件则必须要先调用CoInitialize,该函数主要是用来初始化COM运行环境。但这个函数的作用域是以线程为单位还是以进程为单位呢?也许大家已经通过测试程序摸索出答案,没错,是以线程为单位。今天我们就稍微再深入一下,通过分析CoInitialize的具体实现来印证我们的想法。 我们先来看看CoInitialize的汇编 769B2A24转载 2014-01-15 09:00:48 · 977 阅读 · 0 评论 -
CoInitialize浅析二
最近工作比较忙,在粗略分析了CoInitialize之后我们一直没有再深入研究,下面言归正传。前面我们初步了解到了CoInitialize其实是通过调用CoInitializeEx来实现功能的,而后者最终调用了wCoInitializeEx函数,如果能进一步了解这个函数的内部实现,那么我们对COM环境的初始化过程就比较清晰了。好,我们下面继续看wCoInitializeEx的汇编代码,这次我们分段转载 2014-01-15 09:01:42 · 857 阅读 · 0 评论