我的目标是在内存中创建一个位图,并将其句柄用作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
来完成我的任务吗?