随笔-90  评论-947  文章-0  trackbacks-0
 
     摘要: 错误修正 首先修正一下上篇(《裸写一个进程内 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)编辑 收藏
仅列出标题
共18页: 1 2 3 4 5 6 7 8 9 Last