有没有办法使用NIF_INFO为Shell_NotifyIcon指定用户数据?

时间:2017-08-14 21:21:52

标签: c++ shell winapi notifications

我希望能够使用用户数据(ID或void *)标记每个气球,因此当我收到NIN_BALLOONUSERCLICK时,我可以识别点击的气球并执行对该特定通知有意义的操作。据我所知,鉴于NOTIFYICONDATA结构,这是不可能的。

1 个答案:

答案 0 :(得分:0)

  

据我所知,鉴于NOTIFYICONDATA结构

,这是不可能的。

这是正确的。 Shell_NotifyIcon() API中没有规定将用户定义的数据与通知相关联。

但是,由于您一次只能显示一个气球,因此您可以将数据存储在侧面的某个位置,然后在解除气球时检索它。如果您有多个通知,请使用某种堆栈来存储数据,然后让气球从堆栈中弹出数据。

另一种选择是在使用uCallbackMessage标志时为每个单独的气球使用不同的NIF_MESSAGE值,然后让窗口消息处理程序根据需要区分消息ID。例如,如果您有一个数据数组,则可以选择一个唯一的基本消息ID(可能来自RegisterWindowMessage()并将数组索引添加到其中。