0

私の目標は、メモリ内にビットマップを作成し、そのハンドルを 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);

........

しかし、それは機能しません。ボタンに黒い色がついただけです。

質問:

  1. hMemBmpFillRect(memDC, &rc, brush)の内容を変更しますか? そうでない場合、SelectObject(memDC, hMemBmp)これら 2 つのオブジェクトはどうなりましたか?

  2. CreateBitmapタスクを実行する代わりに使用する必要がCreateCompatibleBitmapありますか?

4

1 に答える 1