我的目标是在内存中创建一个位图并将其句柄用作 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);
........
但它不起作用,我的按钮上只是黑色。
问题:
是否
FillRect(memDC, &rc, brush)
修改了 hMemBmp 的内容?如果不是,SelectObject(memDC, hMemBmp)
这两个对象做了什么?我应该使用
CreateBitmap
而不是CreateCompatibleBitmap
完成我的任务吗?