Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.008 c
14-96965
vidiv
2003-01-10 14:32
2003.01.30
Заработать


3-96640
Kudatsky
2003-01-14 14:50
2003.01.30
Проверка синтаксиса SQL-запроса


9-96501
Artem_V
2002-08-03 12:06
2003.01.30
DelphiX


1-96667
madman-maddom
2003-01-21 16:31
2003.01.30
Как работать с файлами в delphi


3-96621
leran2002
2003-01-14 10:07
2003.01.30
Запароленный Аксесс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский