摘要: 错误修正 首先修正一下上篇(《裸写一个进程内 COM 组件》)中的例子的一个小问题。类厂的CreateInstance里面,上次是这么写的: STDMETHODIMP ClassFactory::CreateInstance(_In_opt_ IUnknown *pUnkOuter, &nbs...
阅读全文
posted @
2012-09-09 12:43 溪流 阅读(4958) |
评论 (3) |
编辑 收藏
摘要: 引言 前几天山寨了ATL的COM_INTERFACE,了解了一个COM类的如何进行通用的组织。今天再来学习下COM协议,看看如何实现一个COM组件——当然,也是不能用ATL的,不然就学不到什么了。 COM DLL说简单简单,说复杂也很复杂。说简单呢,其实貌似只要导出下面这五个函数就可以了: DllCanUnloadNow DllGetClassObject DllRegisterSe...
阅读全文
posted @
2012-09-07 00:23 溪流 阅读(6178) |
评论 (5) |
编辑 收藏
摘要: 在上一篇中,我们实现了COM_INTERFACE宏,并且重新写了一个含有WebBrowser的窗口。在那里我们留了中间层OleContainer。为了验证OleContainer的可用性,现在来写一个含有Windows Media Player(下文简称“WMP”)控件的窗口。 WMP控件的容器类除了IOleClientSite、IOleInPlaceSite、IOleInPlace...
阅读全文
posted @
2012-09-04 22:16 溪流 阅读(3251) |
评论 (2) |
编辑 收藏
摘要: 上一篇我们简单学习了下ATL 的继承链处理。可是,如果要裸写一个含内嵌IE控件的窗口,还是要写一个很长的QueryInterface,以及AddRef和Release,确保引用计数的正确性。于是我们不得不参考ATL的COM_TNTERFACE的处理技巧,来达到一定程度上的易用性。 首先,除了IUnknown以外,其余所有涉及到的接口,均按上一篇的形式,弄成相应的IXXX...
阅读全文
posted @
2012-09-03 23:17 溪流 阅读(3543) |
评论 (4) |
编辑 收藏
摘要: 我们先来看一组接口定义: struct IX { virtual void MethodX() = 0; }; struct IXA : public IX { virtual void MethodXA() = 0; }; struct IXB : public IX {...
阅读全文
posted @
2012-09-02 13:56 溪流 阅读(2886) |
评论 (1) |
编辑 收藏
本博客中提供的任何源代码、非开源软件以及其他作品,如未加特别说明,均属原创。如果其中有版权说明,则请遵守版权说明;如果没有版权说明,任何人都可以将其用于任何合法场合,包括但不限于商业、非商业的。如果您有使用,特别是用于商业场合,您最好通知我一下,但这并不是必须的。本博客中的任何非原创作品,请遵守原作者的版权说明。
|
|
26 | 27 | 28 | 29 | 30 | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | 1 | 2 | 3 | 4 | 5 | 6 |
常用链接
留言簿(21)
随笔分类(124)
随笔档案(90)
我的链接
友情链接
积分与排名
最新随笔
最新评论
阅读排行榜
评论排行榜