
COM
一秀
这个作者很懒,什么都没留下…
展开
-
COM 经验的八个教训
总是调用 CoInitialize(Ex)几个月前,我收到了一封朋友的电子邮件,他就职于一家著名的硬件公司。他的公司编写了一个非常复杂的基于 COM 的应用程序,其中使用了许多进程内和本地(进程外)的 COM 组件。在开始时,应用程序创建了 COM 对象以服务于运行在多线程单元 (MTA) 中的各种客户端线程。该对象还可以托管给 MTA,这意味着接口指针可以在客户端线程之间自由交换。在测试转载 2013-07-20 18:52:26 · 761 阅读 · 0 评论 -
在连接点中设置传入参数时出错,怎么办?【ATL事件】
将参数设为[out]时,打开向导生成的Fire_XXX函数会看到类似代码:比如Fire_xxx(long* val)中:pvars[0]=val;编译会出现警告,需要如下修改: pvars[0].vt =VT_I8 | VT_BYREF; pvars[0].plVal=val;方可成功传入参数,其中VT_BYREF表示采用传递转载 2013-08-15 13:12:42 · 651 阅读 · 0 评论 -
javascript调用COM组件,"错误: 对象不支持此属性或方法"
http://blog.163.com/danshiming@126/blog/static/10941274820114811312523/http://www.d3sw.cn/Blog/article.asp?id=244http://www.cnblogs.com/phinecos/archive/2008/08/07/1263270.html以上文章中均有提到,都贴在这里吧转载 2013-07-29 03:35:25 · 1211 阅读 · 0 评论 -
HRESULT返回值说明
如果函数正常执行,则返回 S_OK,同时真正的函数运行结果则通过参数指针返回。如果遇到了异常情况,则COM系统经过判断,会返回相应的错误值。HRESULT 值 含义S_OK 0x00000000 成功S_FALSE 0x00000001 函数成功执行完成,但返回时出现错误E_INVALIDARG转载 2013-07-27 19:18:11 · 782 阅读 · 0 评论 -
ATL X2X字符串转换宏【谨慎使用】
#include TCHAR *W2T_(WCHAR *lpw){ USES_CONVERSION;//调用ATL的x2x宏的时候别忘这句 return W2T(lpw);}//TCHAR 转 BSTRTCHAR *tstr = "BSTR字符串,释放了没有,不然内存爆死你!";BSTR *bstr = T2BSTR(tstr);SysFreeString(bstr);/原创 2013-07-25 20:45:48 · 919 阅读 · 0 评论 -
添加控制台调试【Console】
#include #include #include static int WriteConsoleOfMine(char *format, ...){ const int BUFFER_SIZE = 1024; char buffer[BUFFER_SIZE]; va_list argptr; int cnt; va_start(argptr,format);//#inc原创 2013-07-28 15:57:02 · 866 阅读 · 0 评论 -
__declspec,uuid,__uuidof 使用说明
用来获取 某种结构、接口及其指针、引用、变量 所关联的GUID,类似于某些语言中获取类型 typeof 这样的操作。假定c++中,有结构体sstruct s{ int i;};可以通过下面的__declspec 给这个结构 关联一个GUIDstruct __declspec( uuid("93A1665E-C9FA-4147-AC3A-3CC855281AF8") ) s转载 2013-07-30 16:53:20 · 4223 阅读 · 0 评论 -
Com 开发注意事项
1. Debug 下没问题, Release 版本编译 error LNK2001: unresolved external symbol _main 去掉 _ATL_MIN_CRT 2. Release MiniDependency版本的中文路径问题修改StatReg.hCParseBuffer的AddString函数,修改lpszT++为lpsz转载 2013-07-22 03:42:57 · 1010 阅读 · 0 评论 -
第一个 COM 程序例子
一、前言 1、IDE : vc6.0 (ATL 3.0)请阅读本回内容; 2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFun,它有两个函数: Add()完成两个数值的加法,Cat()完成两个字符串的连接。 二、建立 ATL 工程 步骤2.1:建立一个工作区(WorkSpace)。转载 2013-07-22 13:56:22 · 795 阅读 · 0 评论 -
VC++中COM开发理论知识
我见过很多人学COM,看完一本书后觉得对COM的原理比较了解了,COM也不过如此,可是就是不知道该怎么编程序,我自己也有这种情况,我也是经历了这样的阶段走过来的。要学COM的基本原理,我推荐的书是《COM技术内幕》。但仅看这样的书是远远不够的,我们最终的目的是要学会怎么用COM去编程序,而不是拼命的研究COM本身的机制。所以我个人觉得对COM的基本原理不需要花大量的时间去追根问底,没有必要,是吃力转载 2013-07-19 19:15:50 · 921 阅读 · 1 评论 -
ATL中我们最关心的细节【ON_CREATE没响应,运行时不可见】
1.创建控件时没有选择”Windowed Only”,使用时发现没有窗口句柄【ON_CREATE无法响应】,怎么办?打开控件类的构造函数,加入 m_bWindowOnly = TRUE; 即可拥有句柄。2.创建控件时没有选择”运行时不可见”,我想加入这个特性,怎么办?在工程目录中找到,***.rgs,用记事本打开,找到: 'MiscStatus' = s '0'原创 2013-08-15 13:10:49 · 697 阅读 · 0 评论