c++ - Shell_NotifyIcon:托盘图标同时显示 - 弹出菜单和任务栏菜单
问题描述
我创建了在鼠标右键单击时显示弹出菜单的托盘图标:
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = (HWND) hWnd;
nid.uID = 12345;
nid.uFlags = NIF_ICON | NIF_MESSAGE;
nid.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_TRAY_ICON);
nid.uCallbackMessage = WM_USER_SHELLICON;
Shell_NotifyIcon(NIM_ADD, &nid);
hWnd - 是主窗口,它是隐藏的。WndProc 看起来像:
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_USER_SHELLICON:
{
switch(LOWORD(lParam))
{
case WM_RBUTTONDOWN:
{
HMENU hPopupsMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDC_POPUPS));
if (hPopupsMenu)
{
HMENU hTrayPopupMenu = GetSubMenu(hPopupsMenu, 0);
if (hTrayPopupMenu)
{
POINT lpClickPoint;
GetCursorPos(&lpClickPoint);
SetForegroundWindow(hWnd);
TrackPopupMenu(hTrayPopupMenu, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_BOTTOMALIGN, lpClickPoint.x, lpClickPoint.y, 0, hWnd, NULL);
}
DestroyMenu(hPopupsMenu);
}
}
break;
}
break;
}
...
当我右键单击托盘图标时,它会显示我的弹出菜单。问题是也显示了默认的任务栏上下文菜单。如何解决?
解决方案
推荐阅读
- web-scraping - 使用 find() 使用漂亮的汤进行网络抓取时返回“无”
- scala - 在 Playframework 中忽略 withRequestTimeout
- javascript - 如何将参数传递给 Express JS 中的中间件函数?
- python-3.x - 如何将 API 请求放入 pandas 数据框中?
- sql - MS Access 查询/设计
- php - 如何从 php 中的数组中获取特定值?
- php - 注意:尝试使用对象数组获取非对象的属性
- android - 程序类型已存在:com.dropbox.core.BadResponseCodeException
- javascript - 使用 boost 模块时,Highcharts 注释不起作用
- google-sheets - 很难为这种情况创建公式