![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ATL/COM
lyclowlevel
这个作者很懒,什么都没留下…
展开
-
ATL的另一个陷阱
ATL早期提供了宏A2W,W2A进行编码转换,但是该组宏存在以下缺点: 1、默认认为转换前的参数(A2W)、转换后的结果(W2A)的编码是ANSI; 2、转换后结果保存在栈上。 该组宏无法满足我们从UTF8、UCS2之间的互相转换,并且有可能导致栈溢出。鉴于此,当我发原创 2011-05-30 12:11:00 · 1533 阅读 · 0 评论 -
ATL的BUG
CStringA strA(_T(""); CStringW strW(""); 以上语句调用GetLastError()会返回ERROR_INSUFFICIENT_BUFFER.原因在于CString内部会调用WideCharToMultiByte.MultiByt原创 2011-02-20 15:09:00 · 796 阅读 · 0 评论 -
COM读书札记(二) 3月22日 1:23
通过赋值得到已经存在的接口指针的引用,是否需要使用引用计数(即对AddRef()和Release()的调用),关键在于:该引用对接口的生命周期是否有影响。例如:pIX1->AddRef();....Do something with pIX1pIX2=pIX1;....Do something with pIX2pIX1->Release();在上述情况中,是不需要原创 2007-03-22 01:24:00 · 590 阅读 · 0 评论 -
COM读书札记(一) 3月21日 0:58
由于毕业设计的需要,我开始学习COM.首先,用BAIDU搜守一下,发现网友们都推荐,等三本书(另外一本是潘爱民写的,忘了名字).思考一下,到网上找了本.打开Adobe,读书行动开始.现在,我看到第三章,讲的是关于IUnkown接口的QueryInterface函数.我的收获如下:1 任何借口都实现了IUnkown接口;2 组件实现接口即该组件继承了该接口 (从C++角度);3原创 2007-03-21 01:09:00 · 773 阅读 · 0 评论 -
什么是AppID
在COM中,安全控制的最小单位是进程,每个进程都有对应的安全控制策略。进程的安全控制策略保存在注册表中,存储位置为:HKCR\AppID\。 AppID指的就是,是一个128位的GUID。该子键保存访问权限、启动权限等安全配置信息。开发COM组件时,可以在COM组件对应的CLSID子键下 新建字符串类型的项,名称:AppID,值:该COM组件所在进程的AppID值。这样就表示该COM组原创 2011-10-19 21:21:56 · 12031 阅读 · 0 评论 -
从ATL窗口销毁想到的对象生命周期管理
使用ATL窗口时,经常会手动销毁窗口,大致的代码如下: DestroyWindow(); m_hWnd = NULL; DestoryWindow()调用是同步的,函数返回时窗口已经被销毁。做为一个微软的好公民,手动将m_hWnd置为空是一个好习惯。 但是,这种做法是不合理的。因为m_hWnd是父类的成员,它的值应该由父类控制。其实,在某些情况下这种做法会产生一个隐原创 2012-04-22 20:35:24 · 1258 阅读 · 0 评论