Установить значок уведомления на панели задач с Win32 Api в стек переполнения

У меня есть этот код (Со страницы Microsoft Вот) это установило значок в панели задач, но я не могу показать никакой значок в нем.

//Notification
nid.cbSize = sizeof(nid);
nid.uFlags = NIF_ICON | NIF_TIP | NIF_GUID;

// Note: This is an example GUID only and should not be used.
// Normally, you should use a GUID-generating tool to provide the value to
// assign to guidItem.

static const GUID myGUID =
{ 0x23977b55, 0x10e0, 0x4041,{ 0xb8, 0x62, 0xb1, 0x95, 0x41, 0x96, 0x36, 0x68 } };
nid.guidItem = myGUID;
nid.hIcon = LoadIconA(wc.hInstance, IDC_ARROW);
// This text will be shown as the icon's tooltip.
StringCchCopy(nid.szTip, ARRAYSIZE(nid.szTip), title);

//TaskBar
nid.hWnd = hwnd;
// Show the notification.
Shell_NotifyIcon(NIM_ADD, &nid) ? S_OK : E_FAIL;

Может ли кто-нибудь помочь мне, пожалуйста? Я только получаю место на панели задач, но «прозрачно».

0

Решение

Ваш код для загрузки иконки не работает. Вы не проверяли на ошибки. Если бы вы сделали так, вы бы увидели, что LoadIcon вернул NULL.

IDC_ARROW определяет курсор, а не значок, поэтому вы должны использовать IDC_ARROW с LoadCursor. Далее, как объяснено в документации, вам нужно будет передать NULL для дескриптора модуля, поскольку он является системным курсором. Но вам нужно загрузить значок в любом случае.

Итак, исправьте свою проблему, загрузив значок. Убедитесь, что LoadIcon возвращает значение, которое не равно NULL. Обычно это можно сделать, связав ресурс значка с исполняемым файлом и загрузив его. В целях тестирования вы можете использовать один из предопределенных значков, как описано в документации для LoadIcon.

И, пожалуйста, никогда не пренебрегайте проверкой ошибок.

1

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

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

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