Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Вниз

LoadImage не работает   Найти похожие ветки 

 
tradakad ©   (2005-01-21 15:15) [0]

пытаюсь загрузить иконку из exe файла
var
btm:HBITMAP;

btm:=LoadImage(Handle,"D:\ww\w.exe",IMAGE_ICON,16,16,LR_LOADFROMFILE);

Handle - это окно.

но btm всегда равен нулю. почему? можно ли воспользоаваться этой функцией не зная файла откуда брать рисунок а зная только дескриптор окна?


 
inic ©   (2005-01-21 15:48) [1]

tradakad ©   (21.01.05 15:15)

По поводу LoadImage почитай Win32 SDK или MSDN,
<имхо> первый параметр здесь не важен, можно поставить ноль,
потом файл должен быть именно графического типа (bmp и т.д.)</имхо>

ExtractIcon пробуй

ExtractIcon(hInstance, "D:\win.exe", 0); //например так


 
tradakad ©   (2005-01-21 15:52) [2]

да читал вроде... а если не знаю файла? если знаю только хендл окна в котором есть иконка?


 
Jel ©   (2005-01-21 15:57) [3]

WM_GETICON не подойдет? Подробности в справке.


 
tradakad ©   (2005-01-21 16:02) [4]

WM_GETICON не подойдет, так как возвращает хендл иконки HICON
а я его не могу дальше использовать, мне нужен HBITMAP


 
Jel ©   (2005-01-21 16:14) [5]

Можно сделать например так:

procedure TForm1.Button1Click(Sender: TObject);
var Icon_Handle : hIcon;
   BMP : tBitmap;
   Icon : tIcon;
begin
 Icon_Handle := SendMessage(Handle, WM_GETICON, ICON_BIG, 0);
 if Icon_Handle <> 0 then begin
   Icon := TIcon.Create;
   Icon.Handle := Icon_Handle;
   BMP := TBitmap.Create;
   BMP.Width := Icon.Width;
   BMP.Height := Icon.Height;
   BMP.Transparent := true;
   BMP.Canvas.Draw(0,0, Icon);
   Icon.Free;
   //вот тут у тебя есть нормальный Битмап, сделанный из иконки
   //Хочешь - бери его Handle, хочешь просто рисуй.
   Canvas.Draw(0,0,BMP);
   bmp.Free;
 end;
end;


Или нужно на чистом API?


 
inic ©   (2005-01-21 16:15) [6]

tradakad ©   (21.01.05 16:02) [4]

Зачем HBITMAP ?


 
tradakad ©   (2005-01-21 16:30) [7]

2 Jel
В  принипе я не знаю как на WinAPi сделать это
BMP.Transparent := true;
BMP.Canvas.Draw(0,0, Icon);
т.е. иконку я нашел
Icon:=GetClassLong(hw,GCL_HICONSM);
а вот как ее запихнуть в новосозданный битмап - не знаю... думаю что в любом случае ножно использовать CreateBitmap , но допустим высоту и ширину я укажу , а вот как на WinApi  сказать что мол "в этой новосозданной битмапке должна лежать иконка , хендл которой равен Icon"

вот такая проблема.


 
tradakad ©   (2005-01-21 16:32) [8]

2 Inic
потмому что при SetMenuItemBitmap нужен хендл именно битмапа а не иконки, т.е. проблема как бы в конвертации иконки в битмап (если можно так сказать)


 
Jel ©   (2005-01-21 16:33) [9]

В догонку - если уж позарез необходим именно HBitmap и именно на API :

procedure TForm1.Button1Click(Sender: TObject);
var Icon_Handle : hIcon;
   IconInfo : _ICONINFO;
begin
 Icon_Handle := SendMessage(Handle, WM_GETICON, ICON_BIG, 0);
 if Icon_Handle <> 0 then begin
   GetIconInfo(Icon_Handle, IconInfo);
   { Тут делаем все, что нужно
     IconInfo.hbmColor - Handle битмапа.
   }
   DeleteObject(IconInfo.hbmMask);
   DeleteObject(IconInfo.hbmColor);
 end;
end;


 
tradakad ©   (2005-01-21 17:06) [10]

Thanks a lot 2Jel . Это то что мне нужно было!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
1-1108965198
xOn
2005-02-21 08:53
2005.03.06
Процедуры и функции Delphi


1-1108994790
Sonic_gd
2005-02-21 17:06
2005.03.06
Кодировка


6-1104479706
BVV
2004-12-31 10:55
2005.03.06
потоки в IdTCPServer


14-1108368694
stone
2005-02-14 11:11
2005.03.06
Lord of The Rings: Battle for middle Earth


1-1109027829
turonix
2005-02-22 02:17
2005.03.06
Как отчистить компонент TreeView?





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