Delphi 2007 にフォームのない Win32 API アプリケーションがあり、.res ファイルからビットマップをロードしたいと考えています。2日間探し回っていましたが、この件に関して何も見つけられなかったので、投稿する時が来ました. :)
「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 などであると考えるのは正しいですか..