Форум: "WinAPI";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
ВнизИконка зарегистрированного Виндой файла Найти похожие ветки
← →
DiHLoS (2002-12-13 11:07) [0]Получаю иконку 32х32, а нужно 16х16. Использую следующий код:
var
Ico: TIcon;
IconNum:Word;
...
Ico:=TIcon.Create;
Ico.Handle:=ExtractAssociatedIcon(Handle,
PChar("c:\windows\notepad.exe"){к примеру}, IconNum);
Canvas.Draw(Left, Top, Ico);
Ico.Free;
Что нужно изменить? Помогите, плиз.
← →
DiHLoS (2002-12-13 13:45) [1]Сам задал вопрос, сам и ответил:)))
У меня получилось через BitMap :
procedure TForm1.Button1Click(Sender: TObject);
var
Ico : TIcon;
Bmp : TBitmap;
IconNum: Word;
begin
Ico := TIcon.Create;
Ico.Handle := ExtractAssociatedIcon(Handle,
PChar({путь к файлу}),IconNum);
Bmp := TBitmap.Create;
Bmp.Height := Ico.Height;
Bmp.Width := Ico.Width;
Bmp.Canvas.Draw(0, 0, Ico);
Form1.Canvas.StretchDraw(Rect(0,0,16,16),Bmp);
Bmp.Free;
Ico.Free;
end;
← →
Игорь Шевченко (2002-12-13 14:10) [2]Вместо
Bmp := TBitmap.Create;
Bmp.Height := Ico.Height;
Bmp.Width := Ico.Width;
Bmp.Canvas.Draw(0, 0, Ico);
Можно
DrawIconEx(Form1.Canvas.Handle, 0, 0, Ico.Handle,
16,16, 0, 0, DI_NORMAL);
← →
DiHLoS (2002-12-13 17:25) [3]Ну можно и так, конечно :))
А вообще была идея для любого файла показывать его иконку, но
ExtractAssociatedIcon дает иконку 32х32... я понимаю, ее можно уменьшить до 16х16, но в Винде же есть эти иконки!!! и они различаются (см. Проводник в режиме "список" и "крупные иконки")
Как доставать именно иконки 16х16 ?
Заранее спасибо!
← →
Игорь Шевченко (2002-12-13 17:47) [4]DiHLoS © (13.12.02 17:25)
Проводник их так и рисует...Через DrawIconEx
← →
DiHLoS (2002-12-13 19:54) [5]Ну не спорю, что он так рисует...
Как нарисовать, это другой вопрос в принципе.:-)
Как получить эту иконку 16х16 (оригинальную, а не уменьшая 32х32).
Попробуйте извлечь иконки, например, из WinWord.exe - их там немеряно: и 32х32 и 16х16...
Как получить желаемое?:-(
← →
Song (2002-12-13 20:25) [6]Проводник рисует через DrawIconEx(), но иконку для рисования получает не с помощью ExtractAssociatedIcon(), а через ShGetFileInfo(). Также эту иконку можно получить вручную, через реестр.
← →
Kirill45 (2002-12-14 04:02) [7]Ну а попробуй так :
Ico := ExtractIconEx(PChar(имя твоего файла),-1,IcoL,IcoS,X);
// Ico - сколько иконок в файле
for X := 0 to Ico do
begin
My_Icon.Handle := ExtractIcon(hInstance, PChar(имя твоего файла),X);
ImageList1.AddIcon(My_Icon);
// ну а по Handle показываешь где тебе надо
end;
посмотри описание ExtractIconEx там можно выбрать 32/16
← →
Song (2002-12-14 11:03) [8]2Kirill45 (14.12.02 04:02)
ExtractIconEx() это будет не та иконка.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c