组件制作之五(托盘组件)[6]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 linzhengqun 的 blog

我们何不效仿它呢。

于是也定义一个成员句柄:

fhandle: hwnd;

把该句柄赋给notifyicondatahwnd字段

再定义一个消息处理过程:

procedure wndproc(var msg: tmessage);

再在组件构造函数中:

fhandle := allocatehwnd(wndproc);

如此之后,组件就可以截获托盘的消息了,并在wndproc过程中作相应处理。这里有必要对托盘的自定义消息做一个介绍:

我们自定义了这个消息wm_traymsg,它的lparam与托盘的uid相同,wparam是鼠标在图标上发生的事件消息,比如单击,双击等。

我们就要把这些消息转化为事件,供给用户处理,所以定义几个事件调度函数:

//以下为事件的调度函数

    procedure dblclick; dynamic;

    procedure click; dynamic;

    procedure mousedown(button: tmousebutton; shift: tshiftstate; x, y: integer); dynamic;

    procedure mouseup(button: tmousebutton; shift: tshiftstate; x, y: integer); dynamic;

procedure mousemove(shift: tshiftstate; x, y: integer); dynamic;

意思很明显,不多说,

本文关键:组件制作之五(托盘组件)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top