Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Белый фон иконок


Автор: Keeper89 4.5.2009, 17:57
Доброго времени суток!

Получаю иконки для приложения следующим образом (в ImageList):
Код

var
  hImageList: THANDLE;
  FileInfo: TSHFileInfo;
...
  hImageList := SHGetFileInfo('C:\', 0, FileInfo,
                SizeOf(FileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
  imgListFolders.Handle:= hImageList;
..

Но цвет фона иконок получается не прозрачным, а белым. В чем может быть проблема?

Заранее спасибо.

Автор: bems 4.5.2009, 18:22
попробуй установит ему Masked в истину

Автор: kami 4.5.2009, 18:29
Apply the appropriate overlays to the file's icon. The SHGFI_ICON flag must also be set.

Код

or SHGFI_ADDOVERLAYS

SHGFI_ADDOVERLAYS = $20;

Автор: Keeper89 4.5.2009, 18:51
bems, kami, не помогает.
Masked = True, bkColor, BlendColor = clNone.

Автор: kami 4.5.2009, 19:36
Цитата(Keeper89 @  4.5.2009,  18:51 Найти цитируемый пост)
bems, kami, не помогает.

Судя по посту, выполнены рекомендации только 
bems.

Я же говорил про:

Код

hImageList := SHGetFileInfo('C:\', 0, FileInfo,
                SizeOf(FileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ADDOVERLAYS);


А вообще, судя по msdn должно быть:

Код

hImageList := SHGetFileInfo(
    PChar(''),
    0,
    fi,
    SizeOf(TSHFileInfo),
    SHGFI_ADDOVERLAYS or SHGFI_SYSICONINDEX or [I]SHGFI_USEFILEATTRIBUTES[/I] or SHGFI_ICON or SHGFI_SMALLICON);

Выделенное курсивом возможно лишнее.

Автор: Keeper89 4.5.2009, 19:41
Цитата(kami @  4.5.2009,  19:36 Найти цитируемый пост)
Судя по посту, выполнены рекомендации только 

Нет, поставил SHGFI_ADDOVERLAYS - результат тот же.

Автор: kami 4.5.2009, 19:54
DrawingStyle = dsTransparent?

Автор: Keeper89 4.5.2009, 20:15
Цитата(kami @  4.5.2009,  19:54 Найти цитируемый пост)
DrawingStyle = dsTransparent? 

Спасибо, помогло, даже убрал флаг SHGFI_ADDOVERLAYS. Хотя, вообще странно, в других случаях у меня было установлено DrawingStyle = dsNormal и все работало.

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