2017-08-14 79 views

回答

0

据我所知,这是不可能给出的NOTIFYICONDATA结构

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

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

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

+0

您的第一个建议可能会工作,但我认为操作系统保留在通知显示过多请求时不显示通知的权利,也许您仍然可以获取所有通知被拒绝/关闭的电话号码 您的第二个解决方案可能工作,我不得不看看是不是一个全局的消息ID存储整个通知图标或如果它是每个气球。此外,你可能会用完信息ID(与RegisterWindowMessage或其他),除非你能够回收它们,这可能会导致无意中回应新的通知老事件。 – cppguy

+0

从文档中,多个气球排队,它们应该一个接一个地显示,并且您应该为每个气球获得'NIN_BALLOONSHOW'和'NIN_BALLOON(HIDE | TIMEOUT | USERCLICK)'。除非“相当时间”处于活动状态,否则除非您指定'NIIF_RESPECT_QUIET_TIME'标志,否则您将得不到任何东西,如果您在“安静时间”期间尝试显示气球,您将获得“NIN_BALLOONHIDE”。 –

+0

'Shell_NotifyIcon()'可以让你为每个通知指定一个不同的'uCallbackMessage' ID。我并不是建议你为每个通知调用RegisterWindowMessage(),我建议你一次**调用它**来获得一个基本ID,然后你可以在每个通知上添加一个偏移量。 –

相关问题