COLORREF fill_color = RGB(r,g,b); COLORREF outline_color = RGB(r2,g2,b2); HBITMAP mask = CRdcolfill::GetFillPattern(mask_id); CButton* button = (CButton*)GetDlgItem(thisbutton); CDC* button_dc = button->GetDC(); RECT rect; button->GetClientRect(&rect); HDC hdcMem = CreateCompatibleDC(button_dc->GetSafeHdc()); HDC hdcMem2 = CreateCompatibleDC(button_dc->GetSafeHdc()); HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, mask); BitBlt(hdcMem2, rect.top, rect.left, rect.right, rect.bottom, hdcMem, rect.top, rect.left, SRCINVERT); BitBlt(button_dc->GetSafeHdc(), rect.top, rect.left, rect.right, rect.bottom, hdcMem2, rect.top, rect.left, SRCCOPY); SelectObject(hdcMem, hbmOld); DeleteDC(hdcMem2); DeleteDC(hdcMem); button->ReleaseDC(button_dc); button->UpdateData(FALSE);