![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ресурсы(RCDATA->BITMAP ?) [D7, WinXP]
Delphi_is_cool © (2006-05-27 10:05:00)Здравствуйте ! Есть ресурсы, которые пинадлежат к типу RCDATA, извечь эти ресурсы я могу(FindResource, LoadResource), но вот как преобразовать извлечённый ресурс в BITMAP ? Т.е в итоге мне нужно получить HANDLE(HBITMAP), для дальнейшей отрисовки ... Заранее благодарен.
Delphi_is_cool (2006-05-29 07:12:00) [1]Немного порылся в модуле Graphics, и проблему решил :) Вот код, может кому пригодится:
function MyLoadBitmap(const ResourceName: String) : HBITMAP;
var
pRes: Pointer;
DC, MemDC: HDC;
BitmapInfo: TBitmapInfo;
hResData, hResInfo, hBmp: THandle;
begin
Result := 0;
hResInfo := FindResource(hInstance, PChar(ResourceName), RT_RCDATA);
if hResInfo <> 0 then
begin
hResData := LoadResource(hInstance, hResInfo);
if hResData <> 0 then
begin
pRes := LockResource(hResData);
if pRes <> nil then
begin
DC := GetDC(0);
if DC <> 0 then
begin
MemDC := CreateCompatibleDC(DC);
if MemDC <> 0 then
begin
ZeroMemory(@BitmapInfo, SizeOf(TBitmapInfo));
Inc(LongWord(pRes), SizeOf(TBitmapFileHeader));
CopyMemory(@BitmapInfo.bmiHeader, pRes, SizeOf(TBitmapInfoHeader));
Inc(LongWord(pRes), SizeOf(TBitmapInfoHeader));
hBmp := SelectObject(MemDC, CreateCompatibleBitmap(DC, 1, 1));
Result := CreateDIBitmap(MemDC, BitmapInfo.bmiHeader, CBM_INIT, pRes, BitmapInfo, DIB_RGB_COLORS);
DeleteObject(SelectObject(MemDC, hBmp));
DeleteDC(MemDC);
end;
ReleaseDC(0, DC);
end;
UnlockResource(hResData);
end;
end;
FreeResource(hResData);
end;
end;
Delphi_is_cool (2006-05-28 14:34:00) [2]
> MBo © (27.05.06 14:24) [1]
>
> LoadBitmap
> LoadImage
Пробовал, не получилось ... GetLastError говорит: "Указанный тип ресурса в файле образа отсутствует".
MBo (2006-05-27 14:24:00) [3]LoadBitmap
LoadImage