上一页 1 2 3 4 5 6 7 ··· 13 下一页
  2012年9月21日
摘要: 引言 在上一篇《在 DLL 中加入第二个 COM 类》的“单用户注册”一节中,我们曾提到脱离注册表依赖一事,现在我们来把这事儿给办了。 注册 我们在之前支持了“regsvr32 /n /i:user COMProvider.dll”这一注册命令。这一注册命令给了我们一定的扩展余地。从ATL默认的代码 阅读全文
posted @ 2012-09-21 00:34 溪流 阅读(15) 评论(0) 推荐(0) 编辑
  2012年9月12日
摘要: 引言 在前面几篇文章里,我们已经成功脱离ATL写了一个COM组件,并且实现了自动化。今天,我们来加入第二个类,并且为加入第二个类做一些整理工作。 为DLL建立一个Module类 在前面,我们为了使得DllCanUnloadNow能正确工作而放了一个全局变量LONG g_nModuleCount,并且 阅读全文
posted @ 2012-09-12 00:23 溪流 阅读(19) 评论(0) 推荐(0) 编辑
  2012年9月9日
摘要: 错误修正 首先修正一下上篇(《裸写一个进程内 COM 组件》)中的例子的一个小问题。类厂的CreateInstance里面,上次是这么写的: STDMETHODIMP ClassFactory::CreateInstance(_In_opt_ IUnknown *pUnkOuter, _In_ RE 阅读全文
posted @ 2012-09-09 12:43 溪流 阅读(43) 评论(0) 推荐(0) 编辑
  2012年9月7日
摘要: 引言 前几天山寨了ATL的COM_INTERFACE,了解了一个COM类的如何进行通用的组织。今天再来学习下COM协议,看看如何实现一个COM组件——当然,也是不能用ATL的,不然就学不到什么了。 COM DLL说简单简单,说复杂也很复杂。说简单呢,其实貌似只要导出下面这五个函数就可以了: DllC 阅读全文
posted @ 2012-09-07 00:23 溪流 阅读(37) 评论(0) 推荐(0) 编辑
  2012年9月4日
摘要: 在上一篇中,我们实现了COM_INTERFACE宏,并且重新写了一个含有WebBrowser的窗口。在那里我们留了中间层OleContainer。为了验证OleContainer的可用性,现在来写一个含有Windows Media Player(下文简称“WMP”)控件的窗口。 WMP控件的容器类除 阅读全文
posted @ 2012-09-04 22:16 溪流 阅读(22) 评论(0) 推荐(0) 编辑
  2012年9月3日
摘要: 上一篇我们简单学习了下ATL 的继承链处理。可是,如果要裸写一个含内嵌IE控件的窗口,还是要写一个很长的QueryInterface,以及AddRef和Release,确保引用计数的正确性。于是我们不得不参考ATL的COM_TNTERFACE的处理技巧,来达到一定程度上的易用性。 首先,除了IUnk 阅读全文
posted @ 2012-09-03 23:17 溪流 阅读(13) 评论(0) 推荐(0) 编辑
  2012年9月2日
摘要: 我们先来看一组接口定义: struct IX { virtual void MethodX() = 0; }; struct IXA : public IX { virtual void MethodXA() = 0; }; struct IXB : public IX { virtual void 阅读全文
posted @ 2012-09-02 13:56 溪流 阅读(15) 评论(0) 推荐(0) 编辑
  2012年9月1日
摘要: 引言 之前也做过一些含内嵌IE控件的东西,只是一直用MFC/ATL等框架,对于里面的原理其实一知半解,只有脱离它们写一遍,才算能真正懂。前不久在写一个SkyDriveClient的时候正好有一个需求,就练习了一下。技术含量没有,在此记录一笔,供后来人入门,供前辈们批评。 本文中,行文以流水帐、贴代码 阅读全文
posted @ 2012-09-01 01:04 溪流 阅读(17) 评论(0) 推荐(0) 编辑
  2012年8月25日
摘要: (cnBeta: http://www.cnbeta.com/articles/203020.htm) 微软拼音输入法的新体验模式,其实是微软拼音一直以来的主要模式。笔者从1.5版开始接触微软拼音以来就一直是这种模式,主要特点就是长句输入、二次确认,在第一次确认的时候,文字就进入仿佛实际输入区域,但 阅读全文
posted @ 2012-08-25 15:31 溪流 阅读(20) 评论(0) 推荐(0) 编辑
  2012年6月13日
摘要: 因为接下去要做优化工作,在此之前,先做下简单的性能测试。 比较的对象是std::regex,暂时只比较两项: 1、解析正则表达式的速度 2、使用解析好的正则表达式去匹配字符串的速度。 测试代码如下: SECTION_BEGIN(StdRegExParse100000); PERFORMANCE_TE 阅读全文
posted @ 2012-06-13 23:00 溪流 阅读(11) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 13 下一页