Вниз
Скачать: CL | DM;

Ресурсы(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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.028 c
2-1158934636
ГореПрограммер
2006-09-22 18:17
2006.10.08
Перевод секунд


6-1147710288
dmitrlast
2006-05-15 20:24
2006.10.08
Где б найти про IDFTPServer?


15-1158293590
DemoN__
2006-09-15 08:13
2006.10.08
Какой прокси лучше поставить на dsl в инет кафе?


2-1158260023
Vovan#1
2006-09-14 22:53
2006.10.08
Почему компилятор предупреждает?


2-1158914441
kyn66
2006-09-22 12:40
2006.10.08
Как сослаться на компонент, зная его TAG ?




   Наверх