求解,SelectObject返回NULL
要改写一下xSkinButton类,然后在DrawBitmap有如下代码:
void CxSkinButton::DrawBitmap(CDC* dc, HBITMAP hbmp, RECT r, int DrawMode)
{
HDC hdcMem = CreateCompatibleDC(dc->m_hDC);
HGDIOBJ hbmOld = SelectObject(hdcMem, hbmp);//此句返回NULL
}
调试发现hbmp参数传过来是有效图片(和外面LoadBitmap返回参数一致),为什么会返回NULL呢?
如果在函数里面LoadBitmap是可以的,即把代码改成如下则是可以的
void CxSkinButton::DrawBitmap(CDC* dc, HBITMAP hbmp, RECT r, int DrawMode)
{
hbmp = LoadBitmap(IDB_XXX);
HDC hdcMem = CreateCompatibleDC(dc->m_hDC);
HGDIOBJ hbmOld = SelectObject(hdcMem, hbmp);
}