现在的位置: 首页 > 综合 > 正文

网络资源收集(01/15/2007-01/19/2007)

2012年11月09日 ⁄ 综合 ⁄ 共 1809字 ⁄ 字号 评论关闭

引子
在日常的工作和学习中,随着了解的深入和涉猎的范围越来越广,不了解的内容越来越多。有些内容在工作中很少涉及,但是不能保证以后也用不上,这时候对知识的收集和整理就显得尤为重要。实际上,对知识的收集和整理也可以看作是工作的重要组成部分,我现在可以不太清楚某个方面的内容,但是不代表我永远不了解这样的内容,良好的信息整理工作可以使我很轻松的定位到我需要的内容,这样在实际工作中可以节省大量的时间,极大的提高了工作效率,从这种意义上说,对信息整理的多少也体现了一个人的能力。所以我就萌生了这样的想法:每隔一段时间,我就整理一下我在这段时间内搜到的优秀的文章,加以归类和注释,并贴到我的博客中,即可以给那些在资料的海洋中苦苦搜讯的"难友"一定的帮助,又可以方便我日后的查找和学习,可以说是一举两得

COM对象注册
如果我们需要使用某个COM对象,我们需要首先将这个COM对象在注册表中注册。简单的说,在注册表中注册的过程就是在注册表中写入一定的信息,在我们使用COM对象的时候,例如创建COM对象的时候,COM的运行环境就会从注册表中读入这些信息并根据这些信息作出相应的处理。现在的一个问题就是那些信息是正确使用COM对象所需要的最少的信息,那些信息和那个功能有关系。在调试的过程中,对这些知识的掌握可以帮助我们快速定位到可能出现问题的地方。我在一位微软的资深软件工程师的博客中找到了这方面的内容:
  What registry entries are needed to register a COM object

在阅读这篇文章之前,快速思考一个小问题:COM对象为什么需要注册?

COM套间
Apartmemt(中文翻译"套间")概念在COM中是一个重要的概念,但是要深入的理解它却并不是一件容易的事情。很多书中对这个概念的解释也是泛泛而谈,看完之后还是似懂非懂。作为Windows编程领域的权威,Jeff Prosise在codeguru中发表的两篇文章,对这个问题有精妙的阐述,看完之后有豁然开朗的感觉:
  Understanding COM Apartments, Part I
  Understanding COM Apartments, Part II

COM Multiple Dual Interfaces
在进入到这个问题之前,先听听下面的对话:

Q:为什么用ATL库(或者说C++语言)写的COM对象不能直接被脚本客户端使用?
A:因为用ATL写成的COM对象是通过虚函数表进行动态绑定,而脚本客户端不支持虚函数机制。
Q:那有没有办法让用ATL库写成的COM对象支持脚本语言(Script)该怎么办?
A:有办法,可以让这个COM对象支持IDispatch接口。如果一个接口从IDispatch接口继承,那么这个接口就是一个“Dual Interface”。
Q:那一个COM对象能不能继承自多个"Dual Interface"?
A:先自己回答这个问题:为什么需要COM对象支持多个"Dual Interface"?
Q:我就希望COM对象支持多个"Dual Interface",有没有办法?
A:恩。。这个。。。。

如果你想回答这个最后的问题,请看下面的文章:
  Exposing Multiple Interfaces to Scripting Clients,
Chris Sells

HANDLE and OBJECT in  Windows  Programming
在Windows编程中,句柄(HANDLE)和对象(OBJECT)是两个非常重要的概念,是掌握Windows编程的关键。可以对于初学者甚至是有一定Windows编程经验的人来说,对这两个概念的理解往往是不全面的,心中总是有这样或者那样的疑问:
1.我们总是通过Handle来索引到对应的对象,这种索引关系是如何建立起来的?
2.GDI中的对象(画笔,刷子等)以及USER32中的对象(窗口,菜单等)和Windows中其他对象(进程,线程,事件)是同一种东西么?如果它们不同,那Windows又是如何管理它们的么?
对于类似这样的疑问,我在MSDN中找到了一篇文章,内容正好是涉及到这方面的内容:
  Give Me a Handle, and I'll Show You an Object, Ruediger Asche

注:这些收集的成果暂时以收集的时间先后顺序排列,在随后的时间里,我会另开一篇文章将具有相同(或相似)主题的收集汇集到一篇文章中,便于按主题检索。

抱歉!评论已关闭.