Delphi里用托盘图标的注意事项

题外话,“托盘图标”这个词貌似非微软的官方术语,官方文档都叫Notify Icon,不过“世上本没有路,走的人多了,也便成了路”,所以说起Tray Icon,知道的人反而更多些。

  1. Main Form的WM_SYSCOMMAND消息这个要捕获,当WPARAM为SC_MINIMIZE时,表示用户点击了主窗口右上角的最小化按钮,这时隐藏主窗口并显示托盘图标,然后直接返回,否则应该用inherited关键字让默认的处理函数执行。
  2. 隐藏的Application窗口的WM_SYSCOMMAND消息也要捕获,同样WPARAM为SC_周MINIMIZE时,表示用户用鼠标右键点击了任务栏上程序窗口按钮时,在出现的系统菜单上选择了“最小化”;另外,用户按下Alt+Space组合键调出的主窗口系统菜单,其实是也是Application窗口的。(捕获这个消息可以用TApplicationEvents的OnMessage事件,同样的,当自己要处理的时候,令Handled这个var参数为True)。
  3. 通常要在主窗口的OnCloseQuery事件里,让用户关闭主窗口的行为变成最小化主窗口(因为很多人都觉得自己的程序是有史以来最牛逼的程序,舍不得被用户关掉)。
  4. 按惯例,右键单击托盘图标时应该出来Popup菜单,这个菜单里如果提供Exit选项,就应该直接关掉主窗口了,所以要通过某种方法(比如一个标志变量)让OnCloseQuery事件里的处理代码知道,现在是不是真的要关闭主窗口了。
  5. 程序退出时不要忘记把托盘图标清理了,不然就会留下一个尾巴——托盘图标还残留在那里,当用户将鼠标移到那个托盘图标时,它忽然就消失了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值