Как сделать фон значка контекстного меню Windiws Explorer прозрачным?

Я пишу расширение Shell с контекстным меню в проводнике. Для отображения иконки используется примерно такой код.

    void DrawMenuItemIcon(int defIconVectorIndex, HMENU defMenuHandle, int defPosition) 
{ 
    HDC hDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL); // Создаем контекст для рисования
    HDC hMemDC = CreateCompatibleDC(hDC); // Создаем совместимый контекст
    HBITMAP hBmp = CreateCompatibleBitmap(hDC, 13, 13); // Создаем совместимый BITMAP           
    SelectObject(hMemDC, hBmp); // Выбираем контекст для рисования
    FillRect(hMemDC, CRect(0, 0, 13, 13), (HBRUSH)(COLOR_MENU)); // Заливаем контекст цветом фона меню, чтобы иконка получилось с прозрачным фоном
    DrawIconEx(hMemDC, 0, 0, MenuIcon.at(defIconVectorIndex).GetHIcon(), 13, 13, 0, 0, DI_NORMAL); // Рисуем иконку             
    DeleteDC(hDC); // Удаляем контекст
    DeleteDC(hMemDC); // Удаляем контекст
    SetMenuItemBitmaps(defMenuHandle, defPosition - 1, MF_BITMAP | MF_BYPOSITION, hBmp, hBmp); // Назначаем bitmap пункту меню
    hBitmaps.push_back(hBmp);
}

MenuIcon.at(defIconVectorIndex).GetHIcon() возвращает HICON (хэндл на иконку, которая загружается из icl) т Иконка получается "прозрачной", если в настройках цветов (Персонализация|Цвета) установлен светлый фон.

Настройка цвета Windows 10

Но как только цвет в настройках меняется, появляется фон иконки. Очевидно, что для задания фона нужно использовать не COLOR_MENU, а что то другое, либо как-то иначе всё это делать.

Другие варианты цветов я перепробовал.

Фон отличается


Ответы (0 шт):