编写可复用性更好的C++代码:Band对象和COMToys
2006-07-21 11:44:13 来源:WEB开发网核心提示: 不久以前,有个朋友问我如何在任务栏里添加编辑框控制,编写可复用性更好的C++代码:Band对象和COMToys(2),他的思路是想获取任务栏的 HWND,然后将编辑框作为子窗口加到任务栏,我建立了自己的 BandObj 框架和一些可重用的 COM 代码,它就是将要在后继部分要介绍的 COM
不久以前,有个朋友问我如何在任务栏里添加编辑框控制。他的思路是想获取任务栏的 HWND,然后将编辑框作为子窗口加到任务栏。我当时就断了他的想法:原因是不能再用过去那种龌龊的方法对现在的系统进行编程。如今的操作系统用COM高度集成,正确的方法应该是利用COM所提供的特性或接口与操作系统进行友善的沟通。
“请把菜单给我好吗?”
“噢,当然可以,”
“请拿好菜单。”
“请现在执行这个命令好吗?”
“没问题,由IContextMenu来做吧。”
......
完成这些工作只需要外壳扩展中各种各样层出不穷的一个小小接口之一就能搞掂。
但是在这些接口中,我还真没发现一个能将窗口添加到任务栏的现成接口呢!。我当时就告诉那可怜的朋友,他的想法很难实现。后来我发现了band对象和IDeskBand(当时这两个东西刚出来不久,在IE4.0和IE5.0中提供)。立刻觉得它就是我梦寐以求的那种接口。我看到 IDeskBand 接口中只有一个方法。于是决定为什么不自己写一个桌面 band(desk band)来实现我朋友的想法呢?心想不就是用这唯一的一个函数嘛,有什么难的呢?
几个月之后产生了几千行代码(不包括代码笔记和一些节外生枝的附加内容),结果如何呢?到不觉得 band 对象实现起来有多难(实际上也并不难),而是我的工程代码不停地膨胀。写了一个band对象不过瘾;接着又建一个框架。有了框架后还觉得不够;我又创建了一个自己通用的 COM 编程平台。之所以要这么做,主要是想尽量使自己的代码具有更佳的的复用性。众所周知,可复用性乃编程之极致,程序员应该像追求靓女一样不停地追求自己代码的可复用性。在最后完工时,我建立了自己的 BandObj 框架和一些可重用的 COM 代码,它就是将要在后继部分要介绍的 COMToys。而本文我们先讨论 BandObj 的基本内容。
更多精彩
赞助商链接