回想上一次用 C++ Builder,大概已经是 3-4 年以前的事情了。我只记得用 C++ Builder 写的最后一个程序是“通用输入法安装程序”,这东西现在恐怕在茫茫网海里已经找不到踪影了。也曾遇到两次有人 Email 找我要这个东西,可惜机器不知道重装了多少次,这个东西早就失踪了。
以前用 C++ Builder,感觉用来写界面还是挺快的,只是后来有一个程序需要写自定义组件的时候,我放弃了C++ Builder,换用了 Visual Basic,因为那时候对 C++ 还不是很熟,写组件越写越迷惑,最后啥也没写出来。因为赶着要出东西,只好换了 VB 三下五除二把事情做了。再然后一直是在用 Java 或 .NET 做 Web 应用。再后来换了家公司,在 Visual Studio 中用 C++/STL 写一些底。一直以来再也没用过 C++ Builder。
从各种迹象来看,打击盗版的行动正在加大力度执行着。何况我本来就是做软件的,都不支持正版软件,那不是自寻死路?因此这两年来一直都在寻找免费的开发工具。Visual Studio 2005 Express 是免费了,可是 MFC 不免费,用 .NET 呢,又实在是对那个 Microsoft .NET CLR(Common Language Runtime) 感觉有点不爽。如果用 wxWindow 和 SmartWin 呢,面对那一堆模板,自定义组件的时候实在心有余而力不足啊。
前段时间突然听说 C++ Builder 免费了,改名叫 Turbo C++ 了。为了区别多年以前的 Turbo C++,我还是把它叫做 Turbo C++ Explorer,因为它是 Turbo Explorer (www.turboexplorer.com) 的一员嘛。以前对那套 VCL 库还是印象不错的,使用起来比较方便,何况有那么多的组件可以从网上下载……
去 www.turboexplorer.com 看了一下,第一感觉,爽,Trubo Explorer 系列好多种产品随便选——不过紧接着我在下载页面发现了一句话:
Please Note!Only one Turbo Explorer edition can be installed per machine, so be sure to download and install the one that's best for you!
这段英文大家能看懂吧,就是说,那么多个 Turbo 产品,每台机器上只能安装其一,所以必须选择你觉得最适合使用的那个。我没啥说的,主要是用 C++ 和 VCL,当然是选择了 Turbo C++ Explorer 了。用 Delphi 的朋友们要郁闷一阵了,因为 Turbo Delphi 和 Turbo Delphi for .NET 是两个产品,要用 VCL 就得放弃 .NET,要用 .NET 就得放弃 VCL。不过好像现在 Turbo Delphi for .NET 里提供了 VCL.NET 库。反正我不会 Delphi,也不管那么多了。
顺便还要说一下,我在网上了解到,安装 Turbo 系统的产品并不会影响以前的。换句话说,你可以用 Delphi 8 和 Turbo Delphi 同时安装在一台机器上。当然 C++ Builder 6 和 Turbo C++ Explorer 也一样可以并存。
正准备下载,又看到一句话差点把我吓傻了:
To install Turbo Explorer, you will need to download two files. The prereqs.zipfile contains additional run-time files required by Turbo Explorer that may not be currently installed on your computer. This includes the Microsoft.NET 1.1 runtime and SDK, the J# run-time, InternetExplorer 6.01, and MSXML.
不至于吧……我只不过想用 C++ 和 VCL,就要叫我去下载 .NET Runtime 和 SDK,而且还是 1.1 版的。这都不说了,居然还跟 J# 扯上了关系。IE 6.01 是本来就有的;MSXML 也不大,装也没关系。只是希望侥幸能不安装 .NET 1.1 SDK 和 J#。所以我还是先下载了 Trubo C++ Explorer,看看能不能安装再说吧。很不幸,最后实事证明,那些东西是一个也逃不掉,全都得安装。
安装的时候也很是让我郁闷了一下。下载下来就一个 EXE 文件,CPP_EXPL_EN_DL.exe。按常理,这个 EXE 文件在执行的时候肯定会解包的,这都很正常,可是这个包解完了之后又出现了第二次解包过程。我实在有些不理解,于是去 Temp 目录下找了一番,发现一个 TruboCPP 目录,下面有一个 Install.exe 和其它一些文件以及三个目录。IB75 里是一个 16M 的安装程序,MDAC 里当然也是一个安装程序,安装 MS 的数据库支持组件的。最郁闷当然是那个 Install 目录了,里面居然有一个 370M 左右的 Data1.cab。这个 Turbo C++ Explorer 的安装包果然是打了两层包的——简直是在考验我的硬盘容量,还不如把外层那个包做成一个 ISO。不过这次安装之后我就把 Temp 目录下的那个 TurboCPP 做成一个 ISO 了,方便以后安装的时候不用多解一次包了。
要使用 Turbo C++ Explorer 还需要一个 Installation key,去 borland 注册一下,下载一个就 OK。只要把文件放对地方就没问题。就是放在“系统盘/Document and Settings/用户名”下面,启动 Trubo C++ 的时候自己会去找那个授权文件的。
Turbo C++ Explorer 与 C++ Builder 6.0 相比,漂亮多了,启动也慢了不少。IDE 的改进是不小,可是编辑器还是一如既往的难用 (用惯了 Visual Studio 和 Eclipse,被宠坏了)。用它写个简单的 Hello World 还是没有问题的。我思考再三,决定用它写极点五笔的配置程序。相比之下,个人感觉还是 VCL 用起来还是比 MFC 和那几套开源的 GUI 库好用一些。
在组件库里找了半天,没发现超链接控件。算了,自己写一个吧,好再现在对 C++ 已经比原来熟悉多了,写个组件应该还是没多少问题,何况 Turbo C++ Explorer 的帮助文档也比以前那个好看多了,虽然有时候某些东西还是查不出来,不过总是比以前那个好。创建一个组件,注册到 Samples 库里……。怎么没出现……不仅没出现,连 Samples 组件页都不见了。好不容易在设置里找到,把前面的勾打上,确定,弹出来一个对话框非常冷酷的拒绝了我——这个版本不支持第三方控件。我晕!那我不添加到 Smaples 库,添加到官方组件库总行了吧……还是不行,看样子是不支持自定义控件了。
事实的确如此。后来我才从 turboexplorer 上看到,原来 Explorer 版真的不支持第三方控件和自定义组件。没办法,自定义组件还是要做的,不然用最古老的组件写出来的东西谁会看得上啊!不说别人,我自己看着都不舒服。只好试着从工程里添加一个新类,自己写代码从 TLabel 继承,尝试了一下,通过代码还是可以添加到 Form 中去的,只是没有可视设计而已——将就着用吧,还好我以前用 Java Swing 写界面的时候也是这么艰苦着过来的,还能习惯。
不过后来想了一下,一些简单的组件,比如超连接,实际就是接管 TLabel 的 OnMouseEnter 和 OnMouseLeave,然后控制一下 TLabel 的显示,写一个控制类与 TLabel 对象绑定也是可以实现的,这样就可以可视设计了:放一个 TLabel 在 Form 上,后台与相应的控制类对象绑定就 OK。只可惜这种情况适用的情况比较少,不能自己处理消息,而且还只能通过组件中 public 或者 __published 的属性、方法和事件来控制,连 protected 的也不行。这方面的东西就不多说了,欢迎有兴趣的朋友来一起讨论。
总的来说,免费而且功能还算强大的 Trubo Explorer 系列发布,是一个非常令人振奋的消息。