【问题标题】:Couple of questions about System Tray Minimize - WIN API关于系统托盘最小化的几个问题 - WIN API
【发布时间】:2013-08-29 11:08:50
【问题描述】:

我想将我的程序最小化到系统托盘,然后我想让程序做 3 件事:

1) 如果我把鼠标放在它上面,它会在它附近显示一些文字(比如当你把鼠标放在 Internet 图标附近时,它会告诉你你的网络 SSID... 2)如果我右键单击系统托盘中的图标,X会发生 3)如果我左键点击系统托盘中的图标,Y会发生

我使用以下代码将我的程序最小化到系统托盘:

void MinimizeSystemTray(HWND hwnd)
{
NOTIFYICONDATA nid; 
nid.cbSize = sizeof(nid); 
nid.hWnd = hwnd;
nid.hIcon = LoadIcon(0, IDI_APPLICATION); 
nid.uCallbackMessage = WM_USER; 
nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE; 

ShowWindow(hwnd, SW_HIDE);

Shell_NotifyIcon(NIM_ADD, &nid);
}

效果很好,虽然我无法为我遇到的 3 个问题找到解决方案...

谢谢!

【问题讨论】:

  • 您需要处理 shell 将发送给您的消息。使用SDK sample,NotifyIcon.zip。

标签: c windows winapi system-tray


【解决方案1】:

更仔细地阅读文档。你所要求的一切都被它所涵盖。

您已经在使用NIF_TIPNIF_MESSAGE,它们允许您在鼠标悬停时提供弹出文本(#1),并告诉系统托盘当用户点击时将什么窗口消息发送回您的 HWND您的图标(#2 和#3),分别。该消息包含您需要了解的所有信息,以区分鼠标悬停、鼠标左键/右键和空格键按下。

【讨论】:

  • 非常感谢!我遇到的最后一个问题是,如果您通常右键单击程序的图标,如何制作小的“菜单选项”...我只是想知道该怎么做...请您给我看一个解释的小代码吗?谢谢!
  • 文档对此非常清楚。当右键单击图标时(取决于 Shell 版本以及您是否使用 NIM_SETVERSION)或 NIN_KEYSELECT 通知,该图标将发送您的 HWND uCallbackMessage 消息,其中包含 WM_CONTEXTPOPUPWM_RBUTTONUP 通知如果图标是用键盘选择的,那么你可以根据需要显示你的弹出菜单,比如TrackPopupMenu/Ex()
猜你喜欢
  • 1970-01-01
  • 2012-11-17
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 2010-12-08
  • 2011-11-29
  • 1970-01-01
相关资源
最近更新 更多