Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Re: Получить иконки

Доброго времени суток, все!

Подскажите, пожалуйста, как получить иконку, с которой ассоциирован
определенный тип файла?

Ответить   Денис Fri, 10 Sep 2004 18:00:02 +0400 (#227085)

 

Ответы:

Здравствуйте !

Буквально дословно из MSDN :

SHFILEINFO sfi;
HIMAGELIST hil;

ZeroMemory(&sfi,sizeof(sfi));
hil = SHGetFileInfo(".zip",
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(sfi),
SHGFI_USEFILEATTRIBUTES|SHGFI_ICON);

// hil now contains the handle to the system image list
// containing the large icon images.
// sfi.hIcon contains the large icon for the file.

То есть в hil получен дескриптор системмного image list-а,
а в sfi.hIcon - дескриптор нужной иконки.
Быть может, в sfi.iIcon - соответствующий индекс иконки в
листе hil.
Кстати, иконку в sfi.hIcon надо будет потом убить вызовом
DestroyIcon.

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru

Номер выпуска : 3532
Возраст листа : 354 (дней)
Количество подписчиков : 471
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/227097
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Fri, 10 Sep 2004 21:15:17 +0400 (#227097)

 

Доброго времени суток, Victor.
Вы писали 10 сентября 2004 г., 15:37:33
на тему "Получить иконки"

А если на Делфе 7?

Ответить   Денис Sat, 11 Sep 2004 15:38:21 +0400 (#227370)

 

Здравствуйте !

Думаю, почти так же.
SHGetFileInfo - API-функция. То есть хоть в делфе, хоть в VB, хоть в VC -
одно и то же. ZeroMemory - просто "обнуляет" блок памяти (вообще, это
псевдоним RtlZeroMemory). В делфи должен быть аналог.
Как уже было сказано, в поле hIcon структуры SHFILEINFO будет возвращен
дескриптор иконки. То есть, собственно, дальше и делать то ничего не надо -
хочешь - рисуй ее при помощи DrawIcon или DrawIconEx, хочешь - в static-
control засунь, в заголовок окна, в список, или еще куда.

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru

Номер выпуска : 3538
Возраст листа : 355 (дней)
Количество подписчиков : 470
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/227418
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Sat, 11 Sep 2004 21:41:08 +0400 (#227418)

 

Доброго времени суток, Victor.
Вы писали 10 сентября 2004 г., 15:37:33
на тему "Получить иконки"

А если на Делфе 7?

Ответить   Денис Sat, 11 Sep 2004 15:38:21 +0400 (#229063)

 

Здравствуйте, Денис.

Вы писали 11 сентября 2004 г., 14:38:21:

Пример.
Отрисуем иконку блокнота на нашей форме.
uses ..., ShellApi,.....;
var
b :_ShFileInfo;
h :HDC;
begin
// заполним структуру b :_ShFileInfo инфой файла блокнота
SHGetFileInfo(PChar('c:\windows\notepad.exe'), 0, b, SizeOf(^b), SHGFI_Icon);
// для нашго примера - получим хендл девайса формы - для отрисовки
h := GetDC(Handle);
// рисуем
DrawIcon(h, 0, 0, b.hIcon);
end;

Ответить   Шешунов Вадим Wed, 15 Sep 2004 23:15:47 +0300 (#229187)

 

Доброго времени суток, Шешунов.
Вы писали 16 сентября 2004 г., 20:48:48
на тему "Получить иконки"

Спасибо! Работает!

Ответить   Денис Thu, 16 Sep 2004 20:49:12 +0400 (#229629)