gpt4 book ai didi

windows - 为什么在 XP(但不是 Vista 或 Windows 7)上显示 DirectShow 窗口可能需要 WS_CLIPCHILDREN?

转载 作者:可可西里 更新时间:2023-11-01 14:47:10 25 4
gpt4 key购买 nike

我写了一个程序在一个窗口上播放MPEG视频(当然DirectShow会打开自己的窗口作为那个窗口的子窗口)。在 Windows Vista 和 7 上,该程序运行良好。但是在 XP 上,只有当我在外部窗口(即不是 DirectShow 的窗口)上设置 WS_CLIPCHILDREN 样式时,视频才可见。这是 XP 中的错误还是 Vista 中的某些模型更改?

最佳答案

实际上,这听起来像是您代码中的错误...

WS_CLIPCHILDREN 影响父窗口的绘制。更具体地说,它阻止它在其子项占用的区域中绘制。因此,如果您定期重新绘制父窗口并且 WS_CLIPCHILDREN 未设置,您将最终踩踏子窗口的显示...

至于为什么这可能会影响 XP 而不是 Vista 或 Win7,嗯...这只是一个猜测,但 XP 上的许多视频播放器使用了大多数视频卡提供的称为“overlays”的功能:本质上,窗口充满了关键颜色,然后硬件将其识别为指示屏幕上将显示视频的区域。由于窗口本身不会经常重新绘制(最初和调整大小时需要用关键颜色填充,但不会为视频中的每一帧重新绘制),允许父级绘制它可能会严重困惑你的输出!

可能的解决方案

  1. 在您的父窗口上使用 WS_CLIPCHILDREN。无论如何,这几乎总是一个好主意。

  2. 如果您的父窗口有自定义绘制代码,请修改它以手动避免在子窗口占用的区域上绘制。

关于windows - 为什么在 XP(但不是 Vista 或 Windows 7)上显示 DirectShow 窗口可能需要 WS_CLIPCHILDREN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com