我在Delphi 2007中有一个没有表格的Win32 API应用程序,并且想要从.res文件加载位图。一直在环顾四天,似乎无法找到关于这个主题的任何内容,所以是时候发帖了。 :)
假设我需要将代码添加到“WM_PAINT”消息,只是不确定要添加什么。也许可以使用GDI。
/感谢。
编辑:
function WndProc(hWin: HWnd; Msg, WParam, LParam: Longint): Longint; stdcall;
var
hbmp: HBITMAP;
ps: PAINTSTRUCT;
DC, hdcMem: HDC;
bmp: BITMAP;
oldBitmap: HGDIOBJ;
begin
case Msg of
WM_CREATE:
begin
hbmp := LoadImage(HInstance, 'C:\test_img.bmp', IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); // Never called H2077 Value assigned to 'hbmp' never used
ShowMessage('Im Here'); // Called
Result := 0;
Exit;
end;
WM_PAINT:
begin
hbmp := LoadImage(HInstance, 'C:\test_img.bmp', IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); // Called
DC := BeginPaint(hWin, ps);
hdcMem := CreateCompatibleDC(DC);
oldBitmap := SelectObject(hdcMem, hbmp);
GetObject(hbmp, SizeOf(bmp), @bmp);
BitBlt(DC, 0, 0, bmp.bmWidth, bmp.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
DeleteObject(hbmp);
EndPaint(hWin, ps);
Result := 0;
Exit;
end;
WM_DESTROY:
begin
PostQuitMessage(0);
Result := 0;
Exit;
end;
end;
Result := DefWindowProc(hWin, Msg, WParam, LParam);
end;
我认为WM_CREATE相当于Form1.OnCreate而WM_DESTROY是Form1.OnDestroy等等。
答案 0 :(得分:1)
查看TBitmap
单元中的Graphics
课程。它有LoadFromResourceName()
和LoadFromResourceID()
方法。