系统托盘通知:它们是标准窗口还是所有者绘制的弹出菜单或其他?

时间:2016-04-12 03:33:02

标签: c++ windows winapi

通知/提醒窗口(显示在Windows系统托盘上方)是否像下面的示例一样只是一个标准窗口,所有者提取HMENU或是使用NOTIFYICONDATA实现的? 注意:我知道实际的系统托盘图标是使用NOTIFYICONDATA实现的,但通知窗口是否也使用此结构实现?

在我的WinAPI C ++应用程序中,我想显示一个类似的通知,它会出现在系统托盘图标上方,有按钮,水平滚动条等。我知道我可以创建一个新的HWND,将它放在系统托盘上方并显示,但如果有一个特定的WinAPI'系统托盘通知'类/功能,我宁愿使用它,因此我的问题。

enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

  

通知/警报窗口(显示在Windows系统托盘上方)是否像下面的示例一样只是一个标准窗口,所有者绘制了HMENU,还是使用NOTIFYICONDATA实现?

这些是在需要时显示的自定义对话框。他们使用NOTIFYICONDATA实现 。您可以使用Shell_NotifyIconGetRect()在需要时获取托盘图标的当前位置。

答案 1 :(得分:1)

托盘通知都是关于通知拥有发生点击事件的图标的进程,以便随后可以执行其操作。

在这种情况下,没有任何与GUI相关的专门机制或框架。

  

Best Practices:当用户右键单击该图标时,它应该   调出一个普通的快捷菜单。但是,单一的结果   用鼠标左键单击会随着功能的变化而变化   图标。 它应该显示用户希望在表单中看到的内容   最适合该内容 - 弹出窗口,对话框或程序   窗口本身。例如,它可以显示状态图标的状态文本,   或音量控制的滑块。