很多人认为Delphi是一个RAD工具,包括我本人在上学的时候对Delphi也有偏见,现在走出了“象牙塔”,涉及的面广了,遇到的问题多了,慢慢地也有了自己的一点心得体会。其实,Delphi是基于Object Pascal 语言的开发工具,也就是说Delphi本质上是一种语言工具,并且是真正的面向对象的。下面我举的例子就是用Delphi实现的一个托盘小程序。程序短小精悍,脉络分明,我将对关键部分进行详细讲解。就象候俊杰先生把MFC一层一层地剥开一样,今天我也来一次“庖丁解牛”。

   在Delphi中涉及到系统的方面毫无例外都要调用API函数,在ShellAPI.pas单元中有要用到的API函数的原型。

实战演练:

一.新建一个应用程序:File->New ApplicatonInterface部分定义一个消息常量:const WM_NID=WM_USER+1000; 规定从WM_USER开始为用户自定义消息。

二.定义一个全局变量: NotifyIcon:TNotifyIconDataNotifyIcon是非常重要的一个变量,整个程序基本上是围着这个变量在转。TNotifyIconData是一个记录类型,按住Ctrl键,在TNotifyIconData 双击即进入ShellAPI.pas单元。(注:在Delphi中,这是一个非常好的对源代码进行分析的方法,源代码说明一切,你要想知道程序背后的内幕,最好的方法就是分析源代码!)此时出现了以下赋值语句:

TNotifyIconData = TNotifyIconDataA,这个意思很明显,就是说TNotifyIconDataTNotifyIconDataA是同种数据类型,接着往下看有:

TNotifyIconDataA = _NOTIFYICONDATAA,意思与刚才的一样,再往下看: 

type

_NOTIFYICONDATAA = record

       cbSize: DWORD;

       Wnd: HWND;

       uID: UINT;

       uFlags: UINT;

       uCallbackMessage: UINT;

       hIcon: HICON;

szTip: array [0..63] of AnsiChar;

end;