MFC界面闪屏 一个主界面有自绘的static控件 用来显示视频流
显示视频的时候用的是双缓冲的 界面不动的话视频和主界面不会闪动
但是一旦窗口覆盖或者有窗口逗留在界面上的时候就会出现以下刷屏
严重的话 视频的小窗口都不见了 视频窗口有10个左右覆盖在主界面上的
这个刷屏问题怎么解决呢
显示视频的时候用的是双缓冲的 界面不动的话视频和主界面不会闪动
但是一旦窗口覆盖或者有窗口逗留在界面上的时候就会出现以下刷屏
严重的话 视频的小窗口都不见了 视频窗口有10个左右覆盖在主界面上的
这个刷屏问题怎么解决呢
//指向图片控件的DC
CDC* m_pImageDC;
//内存兼容DC
CDC m_memDC;
//内存兼容位图
CBitmap m_memBmp;
// 绘制图片到图形控件
void CChangeThemeDlg::DrawImage(void)
{
if(m_pImage==NULL)
return;
if(m_pImageDC==NULL)
m_pImageDC=m_imageCtrl.GetDC();
CRect rcCtrl;
m_imageCtrl.GetClientRect(&rcCtrl);
if(m_memDC.GetSafeHdc()==NULL)
m_memDC.CreateCompatibleDC(m_pImageDC);
if(m_memBmp.GetSafeHandle()==NULL)
m_memBmp.CreateCompatibleBitmap(m_pImageDC,rcCtrl.Width(),rcCtrl.Height());
CBitmap* pBmp=m_memDC.SelectObject(&m_memBmp);
Graphics grap(m_memDC.GetSafeHdc());
grap.DrawImage(m_pImage,0,0,rcCtrl.Width(),rcCtrl.Height());
m_pImageDC->BitBlt(0,0,rcCtrl.Width(),rcCtrl.Height(),&m_memDC,0,0,SRCCOPY);
m_memDC.SelectObject(pBmp);
}DrawImage放到OnPaint里面:
else
{
CDialog::OnPaint();
DrawImage();
}