【问题标题】:C++ shellapi - Garbage characters upon system tray bubblesC ++ shellapi - 系统托盘气泡上的垃圾字符
【发布时间】:2014-02-13 18:15:42
【问题描述】:

所以我正在用 win32 和 shellapi 用 C++ 制作一个控制台应用程序(出于不同的原因)。尽管最近我在调用 Shell_NotifyIcon() 函数时发现了一些问题,但大部分情况下一切都很顺利。

我得到了这段代码:

NOTIFYICONDATA s_data;
s_data.cbSize = sizeof(s_data);
s_data.uFlags = NIF_INFO;
s_data.dwInfoFlags = NIIF_NONE;
s_data.uTimeout = 1;
StringCchCopy(s_data.szInfo, ARRAYSIZE(s_data.szInfo), L"Test message");
Shell_NotifyIcon(NIM_ADD, &s_data);

我已包含以下(相关)头文件:

#include <Windows.h>
#include <Shellapi.h>
#include <Strsafe.h>

我得到以下结果:http://prntscr.com/2s5e3i

我想这与NOTIFYICONDATA::szInfo 成员有关,但我仍然无法解决它。考虑到我已经在网上仔细检查了一些示例(而差异很小),我怀疑这是否真的很明显。

提前致谢。我没有那么多地使用shell,所以如果我误解了一些主要的东西(或使用不正确的东西),请原谅。我希望我至少能在这方面有所收获。

参考资料:

【问题讨论】:

    标签: c++ system-tray


    【解决方案1】:

    我自己解决了,只是在奇怪地问了一会儿之后。

    答案很简单:您需要将NOTIFYICONDATA::szInfoTitle 设置为某个值。就我而言,我完全忘记了它,并希望它使用某种默认标题,但事实并非如此。相反,它被垃圾所取代,使其无法阅读。

    为了解决这个问题,我补充说:

    StringCchCopy(s_data.szInfoTitle, ARRAYSIZE(s_data.szInfoTitle), L"Test title");
    

    现在一切都显得整洁了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2020-01-19
      • 2011-06-25
      • 1970-01-01
      相关资源
      最近更新 更多