应用程序指示图标的实现方法研究
3.应用实例:
下面介绍本人开发的一个IC卡考勤系统中应用程序指示图标的实现作为上述实现方法的一个实例并给出了部分源代码.由于IC卡读卡机功能上存在一些不足,在读卡时不能自己发送”中断”信号到微机,因此微机需要对读卡机进行实时监控,通过检测得知IC读卡机中是否有卡并决定是否进行读卡或其他操作,所以在该系统中采用了应用程序指示图标的技术,并取得了较好的效果..
首先为了使用API函数Shell_NotifyIcon及结构TNotifyIconData,必须在程序的USES语句中添加声明ShellApi单元,然后需要向窗体类的元素中添加一个TnotifyIconData结构,如下:
private
nid: TnotifyIconData;
在窗体的创建程序中设置该结构的各个成员值:
nid.cbsize := sizeof(nid);
nid.wnd := Handle; //当前窗体的句柄
nid.uID := 1;
nid.uCallBackMessage := wm_rbuttondown;
nid.hIcon := LoadIcon(hInstance,’KQ’);
nid.szTip := ’HS考勤系统’;
nid.uFlags := nif_Message or nif_Icon or nif_Tip;
其中函数LoadIcon()用于装载一个图标资源, 参数hInstance为应用程序句柄,第二个参数串值用于指定图标文件名或是图标资源标识符.
再调用API函数Shell_NotifyIcon向任务栏指示区添加一个图标:
Shell_NotifyIcon(NIM_ADD,@nid);
并且设置应用程序的ShowMainForm属性为False使得应用程序窗体在启动时即不可见:
Application.ShowMainForm := False;
为了使应用程序能够对用户在指示图标上的操作有所响应,需要在应用程序窗体中建立一个消息处理函数IconTray.首先是向窗体类的元素中添加一个该过程声明:
public
{ Public declarations }
procedure IconTray(var Msg:TMessage);
message wm_rbuttondown;
其次就需要在该窗体的implementation部分定义该消息处理函数的具体实现过程:
procedure TForm1.IconTray(var Msg: TMessage);
var Pt: TPoint;
I : Byte;
begin
case Msg.LParam of //根据Lparam
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论