実際の表示面ではなく、ビットマップ(仮想表示面として機能する)に描画されるHWNDを作成する方法はありますか?表示面ではなくビットマップに描画されるようなものはありますか?
子ウィンドウ(おそらくコントロールを含む)の作成やGetDCEx経由でのDC取得など、DCで行うことができないウィンドウでできることがあるので、このようなことは役に立ちそうです。
実際の表示面ではなく、ビットマップ(仮想表示面として機能する)に描画されるHWNDを作成する方法はありますか?表示面ではなくビットマップに描画されるようなものはありますか?
子ウィンドウ(おそらくコントロールを含む)の作成やGetDCEx経由でのDC取得など、DCで行うことができないウィンドウでできることがあるので、このようなことは役に立ちそうです。
WM_PAINT
を処理してそこに画像を描画する必要があります。
LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDC, memDc;
PAINTSTRUCT Ps;
HBITMAP bmpBackground;
BITMAP bm;
switch (message)
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
case WM_PAINT:
hDC = BeginPaint(hwnd, &Ps);
// Load the bitmap from the resource
bmpBackground = LoadBitmap(hInst, "your_background_image");
// Create a memory device compatible with the above DC variable
memDc = CreateCompatibleDC(hDC);
// Select the new bitmap
SelectObject(memDc, bmpBackground);
GetObject(bmpBackground, sizeof(bm), &bm);
// Copy the bits from the memory DC into the current dc
BitBlt(hDC, 10, 10,bm.bmWidth, bm.bmHeight, memDc, 0, 0, SRCCOPY);
// Restore the old bitmap
DeleteDC(memDc);
DeleteObject(bmpBackground);
EndPaint(hwnd, &Ps);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
質問は、ビットマップに裏打ちされたウィンドウに描画することです、ウィンドウにビットマップを描画しません。 – aggieNick02
私の質問に簡単な答えはないようです!
あなたが望むものを完全にクリアしていない、背景イメージのウィンドウですか? – vulkanino
ディスプレイに裏打ちされたウィンドウの問題は、最小化されておらず、完全に目に見えるものでなければならないということです。私は、これらの問題を回避し、非表示の目的で使用できるコントロールの画像を使用してビットマップを生成する方法を探しています。たとえば、コントロールを画面に配置し、コントロールが画面外になるようにコントロールを再配置し、コントロールイメージをキャプチャしようとします。 –
どういうことですか?たとえば、コントロールを画面に置いて、コントロールが画面外になるようにウィンドウの位置を変更し、コントロールのイメージをキャプチャしようとします。 –