-1

Visual C++ を使用して Visual Studio 2012 を使用しています。次のように、リソースからビットマップを読み込もうとしています。

HRESULT DemoApp::CreateDIBFromResource(HWND hWnd, HINSTANCE Instance, LPCWSTR ImageID)
{
    HRESULT hr = S_OK;

    HBITMAP bitmap = (HBITMAP)LoadBitmap(GetModuleHandle(0), MAKEINTRESOURCE(ImageID));

    return hr;
}

そして、このように関数を呼び出します

if(SUCCEEDED(CreateDIBFromResource(hWnd, NULL, MAKEINTRESOURCE(IDB_BACKGROUND))))
{
    InvalidateRect(hWnd, NULL, TRUE);
}

何もロードしていなかったので、ブレークポイントを設定しました

return hr;

カーソルを合わせるImageIDと、

ImageID = 0x00000065 Error reading characters of string.

問題がわかりません。Unicode を有効にしていますが、それが関係しているかどうかはわかりません。

4

1 に答える 1

1

MAKEINTRESOURCEは、整数を文字列に変換するマクロです。を呼び出すときは正しく使用しますCreateDIBFromResourceが、結果に再度適用すると意味がありません。ImageIDパラメータを直接使用する必要があります。同じことがパラメータにも当てはまりInstanceます。

HRESULT DemoApp::CreateDIBFromResource(HWND hWnd, HINSTANCE Instance, LPCWSTR ImageID)
{
    HRESULT hr = S_OK;

    HBITMAP bitmap = (HBITMAP)LoadBitmap(Instance, ImageID);

    return hr;
}

ところで、 を返すポイントは何HRESULTですか? を返すべきではありませんHBITMAPか?

于 2013-06-14T07:48:53.383 に答える