C 关于System-WIN API的几个问题

C 关于System-WIN API的几个问题,c,windows,winapi,system-tray,C,Windows,Winapi,System Tray,我想将我的程序最小化到系统托盘中,然后我想让程序做3件事: 1) 如果我把鼠标放在它上面,它会在它附近显示一些文本(比如当你把鼠标放在互联网图标附近,它会告诉你你的网络SSID。。。 2) 如果我右键单击系统托盘中的图标,将出现X 3) 如果我左键单击系统托盘中的图标,将出现Y 我使用以下代码将程序最小化到系统托盘: void MinimizeSystemTray(HWND hwnd) { NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); nid.h

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

1) 如果我把鼠标放在它上面,它会在它附近显示一些文本(比如当你把鼠标放在互联网图标附近,它会告诉你你的网络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个问题的方法


谢谢

更仔细地阅读文档。你所要求的一切都包括在里面


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

您需要处理shell将发送给您的消息。使用NotifyIcon.zip。非常感谢!我遇到的最后一个问题是,如果你通常用鼠标右键点击程序的图标,如何设置小的“菜单选项”。。。我只是不知道怎么做。。。你能给我看一个小的解释代码吗?谢谢文件对此非常清楚。右键单击图标时,图标将发送您的
HWND
包含
WM_CONTEXTPOPUP
WM_RBUTTONUP
通知的
uCallbackMessage
消息(取决于Shell版本以及您是否使用
NIM_SETVERSION
)或者,如果用键盘选择了图标,则会发出
NIN_键选择
通知,然后您可以根据需要显示弹出菜单,例如使用
TrackPopupMenu/Ex()