Delphi笔记-在任务栏通知区中加图标

Delphi笔记-在任务栏通知区中加图标

1.实现该功能要用到Shell_NotifyIconA()函数,它在ShellAPI单元中定义,
  所以要先用uses语句将其包含进去。

2.定义全局常量:
  const
    TrayIconMsg=wm_user+1;//自定义消息常量,当右击任务栏通知区图标时触发的消息的处理函数由该常量来指点定
    iid:=100;//好像没什么用处

3.在窗体类中的private部分中定义自已的消息处理函数
  procedure TrayIconMessage(var message:TMessage);message TrayIconMsg;//两个分号之间的字段表示该消息处理函数的触发是由TrayIconMsg常量来指定的
 
4.实现消息处理函数:
procedure TForm1.TrayIconMessage(var message:TMessage);//注意,在实现部分不用加上message TrayIconMsg
var MsgOutPos:TPoint;//用来存放右击事件发生时,鼠标的位置
begin
  inherited;//进行默认处理
  if(message.lParam=wm_rButtonUp)then //表示按下右键后放开,就执行以下任务
  begin
    GetCursorPos(MsgOutPos);//取得鼠标的位置
    PopupMenu1.Popup(MsgOutPos.x,MsgOutPos.y);//弹出右键菜单
  end;
  message.Result:=0;//不知有什么用
end;

5.在窗体类的public部分中加入一个成员变量:
  TrayIcon:TNotifyIconDataA;

6.实现在任务栏通知区中加入图标:
procedure TForm1.Button1Click(Sender:TObject);
begin
  TrayIcon.cbSize:=sizeof(TNotifyIconDataA);//TrayIcon是TNotifyIconDataA记录类型,cbSize是该记录的长度
  TrayIcon.Wnd:=Form1.Handle;//Wnd指向的是要调用Shell_NotifyIconA()函数的窗口的Handle
  TrayIcon.uID:=iid;//应用程序所定义的任务栏通知区图标的标识符
  TrayIcon.uFlags:=NIF_ICON+NIF_TIP+NIF_MESSAGE;//uFlags指定该记录中哪些项目有效,若有NIF_ICON则hIcon有效,若有NIF_TIP则szTip有效,若有NIF_MESSAGE则uCallbackMessage有效
  TrayIcon.uCallbackMessage:=TrayIconMsg;//uCallbackMessage指定将触发的消息送给哪个消息处理函数
  TrayIcon.hIcon:=Application.Icon.Handle;//hIcon指定放在任务栏通知区中的图标是什么
  TrayIcon.szTip:='右击打开快捷菜单';//szTip指定当鼠标停留在任务栏通知区中的图标上时出现的提示是什么
  Shell_NotifyIconA(NIM_ADD,@TrayIcon);//调用该函数将会在任务栏通知区中放入图标,第一个参数有3个值:NIM_ADD,表示增加图标;NIM_MODIFY,表示修改已有的图标;NIM_DELETE,表示删除图标
end;  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值