WEB开发网
开发学院软件开发VC 编写可复用性更好的C++代码:Band对象和COMToys(3)... 阅读

编写可复用性更好的C++代码:Band对象和COMToys(3)

 2006-07-21 11:44:06 来源:WEB开发网   
核心提示:第三部分 深入Band内部,揭开Band的面纱前面两个部分讨论了 MyBands 对象的创建和注册,编写可复用性更好的C++代码:Band对象和COMToys(3),现在MyBands已经注册妥当并且也具备了类工厂来创建它们,是揭穿Band对象真正面目的时候了,CATID_InfoBand,或 CATID_CommBa

第三部分 深入Band内部,揭开Band的面纱

前面两个部分讨论了 MyBands 对象的创建和注册,现在MyBands已经注册妥当并且也具备了类工厂来创建它们,是揭穿Band对象真正面目的时候了。

Band对象是一个坐落在任务栏或IE中的窗口。但同时我还希望你认识到band对象也是一个必须实现如下三个接口的COM对象:IDeskBand, IObjectWithSite 和 IPersistStream。如果要接受用户输入,可选择实现IInputObject接口,如果下想要上下文菜单,可选择实现IContextMenu接口。图十展示了band对象的所有接口,包括必须实现的和可选择实现的接口。

图十

在Band对象的这些接口中,最重要的是IDeskBand接口,它派生于IDockingWindow,,而IDockingWindow又派生于IOleWindow。这两个接口是必须实现的接口。它们的作用是什么呢?

理解Band对象或任何诸如此类的COM对象的最好方法是检查对象存在时的一系列事件--如监测用户从工具栏中选择Band直到关闭Band期间的活动。为此最好的方法是用能运行的例子代码并在代码中加上TRACE诊断。BandObj具备有内建的诊断功能,它是通过使用一个我自己编写的诊断工具实现的,这个诊断工具叫TRACEFN。TRACEFN中用一个专门的类以及一个AfxTrace的自定制版本来产生期望的诊断输出,利用它可以看到堆栈的内容,图十一显示的就是MyBands运行时的诊断输出,从用户在工具栏菜单中选择Web搜索框开始一步一步往下走。

Windows(桌面band用于资源管理器,浏览栏用于IE)通过查找实现了CATID_DeskBand,,CATID_InfoBand,或 CATID_CommBand的COM对象来发现band对象,并将band的名字添加到工具栏菜单(如图四)。

1 2 3  下一页

Tags:编写 复用 更好

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接