Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > ImageList и 24-битные значки


Автор: 586 6.8.2006, 05:37
hImgList=ImageList_Create(GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON), ILC_COLOR | ILC_MASK | ILC_COLOR24, 2000, 0);

Потом добавляются значки и Image list привязывается в Toolbar. Получаю значки двумя способами: через SHGetFileInfo и ExtractIconEx. Когда добавляю в Image list 24-битные иконки, на ToolBar'е по контуру значка чёрный ореол. Как от этого избавиться?

Автор: GremlinProg 6.8.2006, 12:30
видимо нужно убрать флаг ILC_MASK

Автор: 586 6.8.2006, 12:58
Цитата(GremlinProg @  6.8.2006,  13:30 Найти цитируемый пост)
видимо нужно убрать флаг ILC_MASK 

Теперь они на чёрном фоне.

Автор: GremlinProg 6.8.2006, 13:18
ну, дак выводить картинки на Toolbar нужно с ILD_TRANSPARENT, чтобы убрать задний фон. Смотри ImageList_Draw. А вообще, я бы не привязывался к конкретному бит-рейту на изображения. Возможно глубина цвета оригинала больше, а ты просишь 24 бита, вот он и обрезает, получается черная каемка.

Автор: 586 6.8.2006, 13:28
Цитата(GremlinProg @  6.8.2006,  14:18 Найти цитируемый пост)
Возможно глубина цвета оригинала больше, а ты просишь 24 бита, вот он и обрезает, получается черная каемка. 

Точно! Заменил флаг ILC_COLOR24 на ILC_COLOR32.
Спасибо.

Добавлено @ 13:40 
Когда я убрал манифест, опять появилась эта чёрная каёмка. Чего делать?

Автор: Sheff 6.8.2006, 18:27
А может вообще не стоит писать ни  ILC_COLOR24 ни  ILC_COLOR32 ?

Автор: GremlinProg 6.8.2006, 20:21
если манифест убрал, значит нужно ручками инициализировать comctl32. Для этого вызови InitCommonControlsEx или InitCommonControls перед использованием контролов. Возможно понадобится прямо сказать, что используется 5 или 6 версия контролов. Это можно сделать посылкой сообщения CCM_SETVERSION во все контролы этой библиотеки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)