15,979
社区成员
发帖
与我相关
我的任务
分享
HBRUSH CMamaDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
case CTLCOLOR_BTN:
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(255,255,255));
return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
return hbr;
}
void MyImageButton::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
CDC* pDC = CDC::FromHandle(lpDIS->hDC);
CRect _rt;
this->GetClientRect(_rt);
CDC dcBuffer;//后台缓存
dcBuffer.CreateCompatibleDC(pDC);
CBitmap dfbmp;//设置后台缓存大小
dfbmp.CreateCompatibleBitmap(pDC,_rt.right,_rt.bottom);
dcBuffer.SelectObject(&dfbmp);
dcBuffer.FillRect(&_rt, &CBrush(m_clrTransparent));
dcBuffer.SetBkMode(TRANSPARENT);
if (!m_pImage->IsNull())
{
m_pImage->Draw(dcBuffer.m_hDC, _rt.left, _rt.top, _rt.right, _rt.bottom,
m_nState * m_rtImageRect.right, 0, m_rtImageRect.right, m_rtImageRect.bottom);
}
pDC->TransparentBlt(0,0,_rt.right,_rt.bottom,&dcBuffer,0,0,_rt.right,_rt.bottom,m_clrTransparent);//将后台缓冲COPY到前台
}