Поэтому я делаю консольное приложение на 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
член, но я до сих пор не могу понять, как это исправить. И, учитывая, что я дважды проверил некоторые примеры онлайн (тогда как разница была минимальной), я сомневаюсь, что это что-то действительно очевидное.
Заранее спасибо. Я не так много работал с оболочкой, так что извините, если я неправильно понимаю что-то серьезное (или использую что-то неправильно). Я надеюсь, что смогу получить где-нибудь с этим по крайней мере.
Рекомендации:
Я решил это сам, через некоторое время после странного вопроса об этом.
Ответ прост: вам нужно установить NOTIFYICONDATA::szInfoTitle
к чему-то. В моем случае я полностью забыл об этом и ожидал, что он будет использовать какой-то заголовок по умолчанию, но это не так. Вместо этого он был заменен мусором, что делает его нечитаемым.
Чтобы решить это, я добавил:
StringCchCopy(s_data.szInfoTitle, ARRAYSIZE(s_data.szInfoTitle), L"Test title");
И теперь все выглядит аккуратно.
Других решений пока нет …