0

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 などであると考えるのは正しいですか..

4

1 に答える 1

1

ユニットTBitmap内のクラスを見てください。およびメソッドGraphicsがあります。LoadFromResourceName()LoadFromResourceID()

于 2013-04-22T01:46:16.170 に答える