BOOL CImageList :: Replace (int nImage, CBitmap * pbmImage, CBitmap * pbmMask) - PullRequest
0 голосов
/ 23 мая 2018

У меня есть список изображений.

Для некоторых операций я извлекаю изображения из панели инструментов и заменяю изображение в списке изображений, используя

BOOL CImageList::Replace( int nImage, CBitmap* pbmImage, CBitmap* pbmMask );

Мне нужно применить цвет маски RGB (255,0255) при замене.

ICONINFO iconinfo;
GetIconInfo(hIcon, &iconinfo);
HBITMAP hBitmap = iconinfo.hbmColor;
m_imgListSingle.Replace(0,CBitmap::FromHandle(hBitmap),???)

Я не знаю, что мне нужно передать в качестве третьего аргумента для функции замены CImageList.

1 Ответ

0 голосов
/ 23 мая 2018

Невозможно напрямую использовать функцию замены на цвет маски.

Вы можете использовать следующую последовательность:

  • Используйте метод CImageList::Add ссоответствующий цвет маски
  • Используйте CImageList::GetImageInfo для извлечения растровых изображений, созданных командой Add
  • Используйте метод CImageList::Replace с извлеченными растровыми изображениями
  • используйте CImageList::Delete метод удаления вновь созданного изображения.
  • Не забудьте освободить растровые изображения, которые вы получили с помощью CImageList::GetImageInfo
...