有关窗口及子窗口刷新机制的疑问(视频采集应用)

Elsie 2004-04-01 09:51:58
是这样的,偶正在做一个视频捕获的模块,用VC+视频卡厂商的开发包
(Matrox家的卡)。

测试的时候在一个Dialog上面放了一个灰色的CStatic对象用于显示动
态视频图像(视频显示刷新归视频卡那边处理,只要把显示窗口的句柄
交代给视频卡设置函数就可以)。
在一般情况下都很正常,但是只要有其它窗口处于活动状态的话视频就
会开始狂闪,比如单击弹出了此Dialog的菜单或者其它程序窗口覆盖了
此Dialog等。

看开发包的说明文档,视频卡的视频显示应该可以设置为接受到
WM_ERASEBKGND消息或者WM_PAINT消息后刷新,不过两种设置下碰到上
面情况都会闪 :(
(原文:Sets when the display will be updated......
Updates the display on reception of a WM_ERASEBKGND
message in Windows......Updates the display on reception
of a WM_PAINT message in Windows......)

后来我试过去掉那个CStatic对象,直接在Dialog的客户区显示视频,
就什么问题也没有。
不过这样的话没法灵活控制视频显示在窗口中的区域,没法满足实际使
用要求。

偶对对话框窗口及其子窗口之间的刷新机制理解不是很透彻,麻烦哪位
大牛来帮忙剖析一下产生这种闪烁现象的机理,多谢多谢~
...全文
85 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Elsie 2004-04-01
  • 打赏
  • 举报
回复
To codewarrior:谢谢你的建议
我尝试派生了一个CStatic类并按你的方法重映射派生类的OnEraseBkgnd
(我之前尝试过重映射对话框的OnEraseBkgnd但没用)
的确是不闪了
你能不能详细解释一下菜单一弹出或者对话框一被遮挡后对对话框上面控件的刷新的影响?多谢了
Elsie 2004-04-01
  • 打赏
  • 举报
回复
没很看明白...OnCtlColor里画视频的图像?我前文说了,视频图像的绘制刷新不是我的代码里的事情,只要把相应句柄跟视频控制函数相关联,剩下的图像绘制都是视频卡的DLL的事了
现在问题就是只要我一点击弹出对话框菜单,那个控件就好像在不断地收到什么消息在灰色和图像之间不停地闪
会思考的草 2004-04-01
  • 打赏
  • 举报
回复
映射OnEraseBkgnd,在里面不要调用父类的函数,直接return FALSE。
ymbymb 2004-04-01
  • 打赏
  • 举报
回复
你到OnCtlColor中画图试试看
Elsie 2004-04-01
  • 打赏
  • 举报
回复
对话框本来就没选Clip Children属性...
我感觉是那个静态控件对象不住地在显示视频图像和它本来的灰色底色之间“徘徊”
ColderRain 2004-04-01
  • 打赏
  • 举报
回复
去掉对话框的WS_CLIPCHILDREN 属性试试。
Elsie 2004-04-01
  • 打赏
  • 举报
回复
只需要给剖析一下原因就成了,当然有好的解决方法更好

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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