关于gdi对象释放问题
我的一个 类成员变量
CBitmap m_NetSetBmp;
在初始化时:
m_LoninBmp.Attach((HBITMAP)::LoadImage(NULL,".\\res\\login.bmp",
IMAGE_BITMAP,0,0,LR_LOADFROMFILE));
绘图时:
ShowBitmap(&pdc,&m_NetSetBmp,rcBmp,RGB(214,238,255));
函数体:
bool ShowBitmap(CDC *pDC,CBitmap* bmp,CRect rect,COLORREF MColor)
{
return ShowBitmap((HDC)pDC->m_hDC,(HBITMAP)bmp->m_hObject,rect,MColor);
}
bool ShowBitmap(HDC hDC,HBITMAP hbmp,CRect rect,COLORREF MColor)
{
if(GetObjectType(hbmp) != OBJ_BITMAP)
return false;
int oldMode;
BITMAP bm;
HBITMAP oldHbitmap;
HDC memhdc;
memhdc = CreateCompatibleDC(hDC);
GetObject(hbmp,sizeof(BITMAP),&bm);
oldHbitmap=(HBITMAP)::SelectObject(memhdc,hbmp);
if(MColor==-1)
{
oldMode = SetStretchBltMode(hDC,COLORONCOLOR);
StretchBlt(hDC,rect.left,rect.top,rect.Width(),rect.Height(),memhdc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
SetStretchBltMode(hDC,oldMode);
}
else
{
TransparentBlt(hDC,rect.left,rect.top,rect.Width(),rect.Height(),
memhdc,0,0,bm.bmWidth,bm.bmHeight,MColor);
}
SelectObject(memhdc,oldHbitmap);
DeleteDC(memhdc);
return true;
}
有两个问题:
1:
m_NetSetBmp 用调用m_NetSetBmp.DeleteObject();吗.
2:
我的绘图有时会失败.画出奇怪图片(我截了图,不知道怎么发.);