C ++ shellapi — символы мусора на пузырьках в системном трее

Поэтому я делаю консольное приложение на C ++ с win32 и шеллапи (по разным причинам). В большинстве случаев все прошло хорошо, хотя недавно я заметил некоторые проблемы при вызове функции 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 член, но я до сих пор не могу понять, как это исправить. И, учитывая, что я дважды проверил некоторые примеры онлайн (тогда как разница была минимальной), я сомневаюсь, что это что-то действительно очевидное.

Заранее спасибо. Я не так много работал с оболочкой, так что извините, если я неправильно понимаю что-то серьезное (или использую что-то неправильно). Я надеюсь, что смогу получить где-нибудь с этим по крайней мере.

Рекомендации:

0

Решение

Я решил это сам, через некоторое время после странного вопроса об этом.

Ответ прост: вам нужно установить NOTIFYICONDATA::szInfoTitle к чему-то. В моем случае я полностью забыл об этом и ожидал, что он будет использовать какой-то заголовок по умолчанию, но это не так. Вместо этого он был заменен мусором, что делает его нечитаемым.

Чтобы решить это, я добавил:

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

И теперь все выглядит аккуратно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]