首页 > 解决方案 > 如何获取图标气球提示而不是通知幻灯片

问题描述

我正在创建一个程序,该程序将成为系统托盘通知区域中的图标,但无法显示气球提示。

通知图标气球消息,如 NIN_BALLOONSHOW,可以正常接收,但我得到了一个从屏幕右边缘滑出的工具提示,而不是我需要的旧气球。Win10-1809 可能会拦截消息并改变它们的行为。如您所知,我使用的是 c++。

我怎样才能改变这个并让旧气球回来?

编辑:我在注册表中找到了一种方法,但我需要一种使用代码的方法。

更多数据:

以下是我正在做的一些事情:

  // initial tooltip code
NOTIFYICONDATA  nid;
nid.cbSize           = sizeof(nid);
nid.hWnd             = hwnd;
nid.uID              = 1;
nid.uFlags           = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP;
nid.uVersion         = NOTIFYICON_VERSION_4;
nid.uCallbackMessage = WMAPP_NOTIFYCALLBACK;

LoadIconMetric(g_hInst, MAKEINTRESOURCE(IDI_MYICON
               LIM_SMALL, &nid.hIcon);
LoadString(g_hInst, IDS_MYTOOLTIP, nid.szTip, ARRAYSIZE(nid.szTip));

Shell_NotifyIcon(NIM_ADD, &nid);
Shell_NotifyIcon(NIM_SETVERSION, &nid);

然后在我想要气球时在代码中:

  // balloon code
nid.uFlags           = NIF_INFO;
nid.dwInfoFlags      = NIIF_WARNING;

LoadString(g_hInst, IDS_BALLOON_TITLE, nid.szInfoTitle,
           ARRAYSIZE(nid.szInfoTitle));
LoadString(g_hInst, IDS_BALLOON_TEXT, nid.szInfo, ARRAYSIZE(nid.szInfo));
LoadIconMetric(g_hInst, MAKEINTRESOURCE(IDI_BALLOON), LIM_LARGE,
               &nid.hBalloonIcon);

Shell_NotifyIcon(NIM_MODIFY, &nd);

标签: c++winapitooltipsystem-tray

解决方案


推荐阅读