Проблема при использовании PNG в объекте CToolBar - PullRequest
3 голосов
/ 18 февраля 2020

Я пытаюсь вставить CImageList в CToolBar объект с именем m_wndUtilBar. Я добавляю все изображения, используя код ниже:

CImageList imageList;
CBitmap bitmap;
COLORREF crMask = RGB(192, 192, 192);

CSize button, button_img;
button.cx = 39; 
button.cy = 39; 
button_img.cx = 32; 
button_img.cy = 32;
m_wndUtilBar.SetSizes(button, button_img);

imageList.Create(button_img.cx, button_img.cy, ILC_COLOR32 | ILC_MASK, 18, 1);

LoadBitmapFromPNG(IDB_PNG_UP, bitmap);
imageList.Add(&bitmap, crMask);
bitmap.Detach();
.
.
. // adding more images into the list
.

И затем я добавляю список в объект, как показано ниже:

m_wndUtilBar.GetToolBarCtrl().SetImageList(&imageList);
imageList.Detach();

Все изображения, которые я использовал, являются ресурсами, включенными в проект, а не как растровые изображения, но как PNG (я говорю это, потому что думаю, что проблема в этом есть).

После запуска приложения все работает нормально. Все изображения отображаются и кнопки работают правильно. Однако, когда я отключаю одну из этих кнопок, изображение этой кнопки отображается как включенное (без этой типичной серой отключенной маски), и я не знаю почему.

Кто-нибудь может мне помочь? Я не знаю, что делать, чтобы применить эффект отключения к изображению отключенной кнопки.

ОБНОВЛЕНИЕ 1

Я вижу, что эффект отключения появляется только на границах изображений, поэтому я полагаю, что эффект применяется, однако этот эффект не применяется внутри PNG.

1 Ответ

2 голосов
/ 18 февраля 2020

Возможно, вам также потребуется указать png graphi c для отключенного состояния.

Из документации:

Использование списков изображений в элементе управления панели инструментов

вам нужно использовать SetDisabledImageList () и SetHotImageList () для подобных вещей.

...