自绘滚动文本控件,滚动时有闪烁的现象
大家好,我想做一个滚动文本控件,滚动显示文本。我首先从CStatic派生,然后,在CStatic的派生类OnPaint里,绘制文本。
并使用定时器改变绘制文本的Rect。可是,文本在滚动时,会有闪烁的现象。文本绘制时,已使用双缓冲,但还是有“闪烁”的现象。
代码如下:
CRect rcClient;
GetClientRect(&rcClient);
// 创建内存DC
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmp, *pOldBmp;
bmp.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
pOldBmp = dcMem.SelectObject(&bmp);
if (m_hBkBitmap != NULL)
{
// 创建背景DC
CDC dcBk;
dcBk.CreateCompatibleDC(&dc);
HBITMAP hOldBmp = NULL;
hOldBmp = (HBITMAP)dcBk.SelectObject(m_hBkBitmap);
dcMem.BitBlt(
0, 0,
rcClient.Width(), rcClient.Height(),
&dcBk,
0, 0,
SRCCOPY
);
dcBk.SelectObject(hOldBmp);
if (dcBk.GetSafeHdc() != NULL)
{
dcBk.DeleteDC();
}
}
......
dcMem.SetBkMode(TRANSPARENT);
dcMem.DrawText(m_vecItems[m_uCurItemIndex].m_strTextTip, rcTextTip, DT_VCENTER | DT_CENTER | DT_SINGLELINE) ;
请大家帮忙分析原因。非常感谢。