MFC+OPENCV 子窗体嵌入父窗体导致子窗体不停闪烁

江枫_820 2018-10-17 03:37:50
我在做一个MFC项目,卡在视频显示上,视频在父子窗体上显示,父子窗体分别接收两路不同的视频流,在显示视频时子窗体不停闪烁,如下图:




已经采取的方法有:
1. OnEraseBkgnd
BOOL MediadataOCXDialog::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return TRUE;
}
2.设置父窗体刷新时不重绘子窗体
CWnd *_mWnd = AfxGetMainWnd();
HWND _hHwnd = _mWnd->m_hWnd;
LONG_PTR Style = ::GetWindowLongPtr(_hHwnd, GWL_STYLE); //获取父窗体属性
Style = Style | WS_CLIPCHILDREN; //父窗口不再重绘子窗口覆盖部分
::SetWindowLongPtr(_hHwnd, GWL_STYLE, Style);//重置父窗体属性
3.创建双缓冲区
CDC MemDC;
CDC* pDC;
cv::Mat _pic1;
_pic1 = m.clone();
CRect rect;
_g_pWnd->GetDlgItem(IDC_STATIC)->GetClientRect(&rect);
MemDC.CreateCompatibleDC(pDC);
_pic1.create(cv::Size(w, h), CV_8UC3);
MemDC.SelectObject(&_pic1); //将位图选进内存中
pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);
注:创建的缓冲区视频不显示

请问这种闪烁该怎么处理。
...全文
236 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
江枫_820 2018-10-17
  • 打赏
  • 举报
回复
1楼、3楼完美解决闪烁,谢谢!
赵4老师 2018-10-17
  • 打赏
  • 举报
回复
引用 1 楼 hurryboylqs 的回复:
pDC->ExcludeClipRect(子窗口区域)

Eleven 2018-10-17
  • 打赏
  • 举报
回复
父窗口设置clip children ? WS_CLIPCHILDREN
hurryboylqs 2018-10-17
  • 打赏
  • 举报
回复
pDC->ExcludeClipRect(子窗口区域)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧