我有一个 activeX 控件,其中包含一个窗口,该窗口具有正在绘制的流式视频。我有一个单独的对话框,我在另一个窗口中创建了一个单独的对话框,我以各种方式将其设置为透明或半透明(即使用 SetLayeredWindowAttributes(...) 以及对话框的 Layered 属性 [用于 alpha 混合] 或设置透明财产)。
此外,我尝试使用各种方法来尝试让对话框的窗口始终绘制在流视频窗口的顶部,但没有一种方法对我有用。如果我在对话框上有一个按钮或使用 LineTo(...) 调用在透明表面上绘图,它们不会保留在视频顶部。我尝试使用 SetWindowPos 来影响两个窗口的 z 顺序,并尝试更改对话框窗口属性,例如“TopMost”,但无济于事。
有没有人试图为流视频上的覆盖窗口做这样的事情,并让 z 顺序在流视频之后始终绘制前窗口?
更新:02/10/10 - 尝试使用 WS_EX_LAYERED 属性和 SetLayeredWindowAttributes(...) 使用 LWA_COLORKEY 并实现了我想要的。由于分层属性不能与 WS_CHILD 样式一起使用,因此该解决方案带来了一些必要的覆盖窗口位置管理,该位置相对于带有视频的窗口。此外,我还试图消除其他一些奇怪的东西。例如,当带有视频的 activeX 控件窗口嵌入到 IE 选项卡中并且我切换到另一个选项卡时,覆盖窗口上的控件仍保留在新选项卡的顶部(使用 WS_POPUP 样式时)。仍在研究是否会有其他方法来处理这个问题,然后确定开关和隐藏窗口可见性。