Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: 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 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.048 c
2-1158572518
Димыч
2006-09-18 13:41
2006.10.08
Перехват сообщений "Службы сообщений" Windows


2-1159093869
delphi_
2006-09-24 14:31
2006.10.08
2 вопроса по Paradox


15-1158390100
Новичоккк
2006-09-16 11:01
2006.10.08
Ищу компонент для Delphi


2-1158916650
ян
2006-09-22 13:17
2006.10.08
Отчет в Excel


2-1158931301
jjj
2006-09-22 17:21
2006.10.08
Как очистить все ячейки в ValueListEditor?