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);
........
하지만 내 버튼을, 난 그냥있어 검은 색을 작동하지 않습니다.
질문 :
이
FillRect(memDC, &rc, brush)
이 hMemBmp의 내용을 수정할 수 있습니까? 그렇지 않은 경우이 두 객체에 대해SelectObject(memDC, hMemBmp)
이 수행 한 작업은 무엇입니까?CreateCompatibleBitmap
대신CreateBitmap
을 사용해야합니까?
감사합니다. 작동합니다. SelectObject (memDC, hOldBmp) 다음에 hMcBmp가 hdc로 선택되고 hOldBmp가 memDC로 선택됩니다. 그렇습니까? – user565739
@ user565739 : 아니요, 아무도 'hdc'에 아무것도 선택하지 않습니다. 그 라인'hMemBmp'가 어떤 DC와도 분리되어있을 것이고 내부에 이미지가있을 것입니다. 정확히 BM_SETIMAGE가 기대하는 것입니다, 당신의 이미지를 담고있는 연결되지 않은 비트 맵입니다. –