-1
GetObject()
文書では、lpvObject
がNULLの場合、必要なバイト数が返されます。しかし、私は失敗したときの戻り値である0を取得しています。lbvobjectがNULLのときにGetObjectが失敗する理由
私は何をしているのか探し出しています。私が言ったようにa
がGetObject()
関数呼び出しのために、常に0、または失敗で、
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd, &ps);
HBITMAP hbmap;
hbmap = (HBITMAP) LoadImage(NULL, str_path, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
BITMAP bm;
HDC bmapmemory = CreateCompatibleDC(hdc);
SelectBitmap(bmapmemory, hbmap);
int a = GetObject(hbmap, sizeof(BITMAP), NULL);
BitBlt(hdc, 0, 0, 750, 750, bmapmemory, 0, 0, SRCCOPY);
char c[64];
sprintf_s(c, sizeof(c), "%f\n", a);
OutputDebugStringA(c);
DeleteDC(bmapmemory);
DeleteObject(bmap);
EndPaint(hwnd,& ps);
return 0;
}
:
は、私はちょうどWM_PAINT
メッセージを使用して、基本的なウィンドウのセットアップを持っています。
'hbitmap'は実際に有効なハンドルですか?そうでない可能性があります。まず、NULLでないかどうかを確認します。もしそうなら、 'LoadImage'の呼び出しの後に' GetLastError'をチェックしてください。 (変数が通常 'hbmap'のスペルであることは奇妙なことですが、' GetObject'の呼び出しでは 'hbitmap'というスペルがありますが、それはちょうどタイプミスですが、コピーして貼り付けるときには不可能です。あなたのスタックオーバーフローの質問に...コード)* –
"hbmap"を意味しましたか? – molbdnilo
はい私はhbmapを意味しました。無関係なものを取り除くときはタイプミスでした。編集ありがとう。それは奇妙な部分は、ハンドルが正常に作成され、非ヌルであり、画面上に正しく表示されていることです。 – anonymous123432