找遍了网上都没有完整的画TAB标签页背景图的资料
这是我自己写的一个,但却还是没有画出来,请问到底是哪里出了错!
void CTabCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
//解析lpDrawItemStruct结构,获取控件的相关信息
CRect rect = lpDrawItemStruct->rcItem;
UINT state = lpDrawItemStruct->itemState;
CDC * pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
int nOldDC = pDC->SaveDC(); //双缓存绘图
CRect rectItem;
CBitmap bitmapTemp, *pOldBitmap;
CDC * pMemDC = new CDC; //获取窗口大小, 创建位图内存
GetItemRect(0, &rectItem);
bitmapTemp.CreateCompatibleBitmap(pDC, rectItem.Width(), rectItem.Height());
pMemDC->CreateCompatibleDC(pDC);
pOldBitmap = pMemDC->SelectObject(&bitmapTemp); //获取背景
this->GetParent()->ScreenToClient(rectItem);
pMemDC->BitBlt(0, 0, rectItem.Width(), rectItem.Height(), this->GetParent()->GetDC(), rectItem.left, rectItem.top, SRCCOPY); //绘制按钮
DrawPicture(pMemDC, "Lobby\\TabItem.bmp", rect); //绘制到前景
pDC->BitBlt(0, 0, rectItem.Width(), rectItem.Height(), pMemDC, 0, 0, SRCCOPY);
//恢复DC
pDC->RestoreDC(nOldDC); //释放内存
pMemDC->SelectObject(pOldBitmap);
ReleaseDC(pMemDC);
delete pMemDC;
}void CTabCtrlEx::DrawPicture(CDC* pDC, const char * strPicName, CRect rect)
{
CBitmap * pOldBitmap;
CDC * pMemDC = new CDC;
BITMAP bmData;
CSize sizeButton; //按钮的大小
CBitmap bmpButton; //按钮图片
COLORREF clrColorKey = RGB(255, 0, 255); //色键 string strCurPath = GetCurPath();
char strPicPath[MAX_PATH] = {0};
sprintf_s(strPicPath, "%s\\PicData\\%s", strCurPath.c_str(), strPicName);
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, strPicPath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); 
bmpButton.Attach(hBitmap); 
bmpButton.GetBitmap(&bmData);
sizeButton.SetSize(bmData.bmWidth, bmData.bmHeight); //读位图到内存
pMemDC->CreateCompatibleDC(pDC);
pOldBitmap = pMemDC->SelectObject(&bmpButton);
pDC->TransparentBlt(rect.left, rect.top, rect.Width(), rect.Height(), pMemDC, sizeButton.cx, 0, sizeButton.cx, sizeButton.cy, clrColorKey);
pMemDC->SelectObject(pOldBitmap); //释放内存
ReleaseDC(pMemDC);
delete pMemDC;
}