私の目標は、メモリ内にビットマップを作成し、そのハンドルを BM_SETIMAGE メッセージ (ボタンのビットマップを設定するメッセージ) のパラメーターとして使用することです。
以下は私のコードです:
........
HDC hdc = GetDC(hwnd);
HDC memDC = CreateCompatibleDC(hdc);
HBITMAP hMemBmp = CreateCompatibleBitmap(hdc, 100, 100);
HBITMAP hOldBmp = (HBITMAP)SelectObject(memDC, hMemBmp);
Rectangle(memDC, 0, 0, 100, 100);
HBRUSH brush = CreateSolidBrush(RGB(0xff, 0xff, 0x00));
RECT rc;
rc.left = 0;
rc.top = 0;
rc.right = 100;
rc.bottom = 100;
FillRect(memDC, &rc, brush);
SendMessage(GetDlgItem(hDlg, IDC_SET_START_PAGE_BG), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hMemBmp);
........
しかし、それは機能しません。ボタンに黒い色がついただけです。
質問:
hMemBmp
FillRect(memDC, &rc, brush)
の内容を変更しますか? そうでない場合、SelectObject(memDC, hMemBmp)
これら 2 つのオブジェクトはどうなりましたか?CreateBitmap
タスクを実行する代わりに使用する必要がCreateCompatibleBitmap
ありますか?