C 关于System-WIN API的几个问题
我想将我的程序最小化到系统托盘中,然后我想让程序做3件事: 1) 如果我把鼠标放在它上面,它会在它附近显示一些文本(比如当你把鼠标放在互联网图标附近,它会告诉你你的网络SSID。。。 2) 如果我右键单击系统托盘中的图标,将出现X 3) 如果我左键单击系统托盘中的图标,将出现Y 我使用以下代码将程序最小化到系统托盘: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
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()
。