Форум: "WinAPI";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];
ВнизРесурсы(RCDATA->BITMAP ?) Найти похожие ветки
← →
Delphi_is_cool © (2006-05-27 10:05) [0]Здравствуйте ! Есть ресурсы, которые пинадлежат к типу RCDATA, извечь эти ресурсы я могу(FindResource, LoadResource), но вот как преобразовать извлечённый ресурс в BITMAP ? Т.е в итоге мне нужно получить HANDLE(HBITMAP), для дальнейшей отрисовки ... Заранее благодарен.
← →
MBo © (2006-05-27 14:24) [1]LoadBitmap
LoadImage
← →
Delphi_is_cool © (2006-05-28 14:34) [2]
> MBo © (27.05.06 14:24) [1]
>
> LoadBitmap
> LoadImage
Пробовал, не получилось ... GetLastError говорит: "Указанный тип ресурса в файле образа отсутствует".
← →
Delphi_is_cool © (2006-05-29 07:12) [3]Немного порылся в модуле 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;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.055 c