Не удается установить правильный значок в Tray в Visual C ++ с помощью LoadIcon ()

Итак, у меня есть программа, которая не имеет консоли. Он запускается путем создания фиктивного HWND, который затем скрывается, а затем действует как приложение области уведомлений (остается в трее). Люди могут наводить курсор на программу, чтобы просмотреть ее состояние, и нажимать горячие клавиши для выполнения задач на экране.

В любом случае, я хочу отобразить значок моей программы в трее, но не могу. Я добавил ресурс значков в Visual Studio, и у моего исполняемого файла есть значок в проводнике. Ресурс имеет размеры от 16х16 до 256х256.

Теперь я установил для NOTIFYICONDATA информацию:
nid.hIcon = LoadIcon (NULL, MAKEINTRESOURCE (IDI_ICON1));

и включил «resource.h»

Который определяет IDI_ICON1 как 104. Однако, когда я использую это, появляется синий значок точки объяснения (то есть один из окон по умолчанию). Я попытался IDI_ERROR, и значок ошибки появился нормально. Я попробовал пользовательский значок 12×12, так как считал, что размер может быть проблемой, но это тоже не сработало.

IDI_APPLICATION использует значок приложения по умолчанию, то есть значок .exe по умолчанию.

В настоящее время я не знаю, что попробовать или сделать.

Заранее спасибо за помощь!

1

Решение

Статья MSDN для LoadIcon () говорит это о своем первом аргументе:

Дескриптор экземпляра модуля, чей исполняемый файл содержит значок для загрузки. Этот параметр должен быть НЕДЕЙСТВИТЕЛЕН, когда загружается стандартный значок.

Поскольку вы загружаете не стандартный значок, а свой собственный, вам необходимо предоставить действительный дескриптор модуля. Дескриптор модуля для вашего исполняемого файла может быть получен с передачей NULL в GetModuleHandle () функция, поэтому код будет выглядеть так:

nid.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
4

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

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

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