Главная страница
    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.011 c
3-96532
qwerty2
2003-01-14 23:46
2003.01.30
Изменить текст в DBLookupComboBox


1-96748
VitGun
2003-01-22 15:28
2003.01.30
MDI-форма


1-96873
softmaster
2003-01-21 12:16
2003.01.30
Проблема с OLE.


1-96698
Maxk
2003-01-21 18:39
2003.01.30
Закрыть окно


3-96543
Andy Eremin
2003-01-15 10:10
2003.01.30
DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский