2010.11.10
子控件的重绘
内存dc。
在OnPaint中,直接用dc画 可能会导致闪烁,如下可解决:
防闪烁内存dc
CPaintDC dc(this);
if (m_pMemDc->GetSafeHdc() == NULL)
{
m_pMemDc->CreateCompatibleDC(&dc);
HANDLE h=m_pBitmap->GetSafeHandle();
m_pBitmap->DeleteObject();
m_pBitmap->CreateCompatibleBitmap(&dc, oRect.Width(),oRect.Height());
}
m_pMemDc->SelectObject(m_pBitmap);
m_pMemDc->PatBlt(oRect.left,oRect.top,oRect.Width(),oRect.Height(),PATCOPY);
//设置背景色
m_pMemDc->SelectObject(&bBack);
m_pMemDc->SetBkColor(m_oCurInfo.dwBackColor);
m_pMemDc->SetBkMode(TRANSPARENT); //设置透明
//中间进行画图和普通dc一样
// 显示
dc.BitBlt(oRect.left,oRect.top,oRect.Width(), oRect.Height(),m_pMemDc,oRect.left,oRect.top,SRCCOPY);