Windows 在win32编程中,为什么可以';如果我在媒体播放器上覆盖一个透明窗口(通过WS_EX_LAYERED)我就看不到视频了吗?

Windows 在win32编程中,为什么可以';如果我在媒体播放器上覆盖一个透明窗口(通过WS_EX_LAYERED)我就看不到视频了吗?,windows,winapi,Windows,Winapi,我编写了一个应用程序,它在屏幕上覆盖一个透明窗口。透明窗口是通过对其应用WS_EX_LAYERED样式并调用SetLayeredWindowAttributes来创建的( hWnd, RGB(0,0255), 127, 阿尔法 ); 我遇到了一个问题,当这个透明窗口在播放视频的媒体播放器上时,透明区域就会变成灰色,我看不透 为什么呢?我能做些什么才能通过透明窗口看到媒体播放器的内容?我不确定以下内容,但我相信这可能是基于我的知识 通常在矩形区域中创建一个覆盖曲面,用于播放视频以实现硬件加速,视频

我编写了一个应用程序,它在屏幕上覆盖一个透明窗口。透明窗口是通过对其应用
WS_EX_LAYERED
样式并调用
SetLayeredWindowAttributes来创建的(
hWnd,
RGB(0,0255),
127,
阿尔法
);

我遇到了一个问题,当这个透明窗口在播放视频的媒体播放器上时,透明区域就会变成灰色,我看不透


为什么呢?我能做些什么才能通过透明窗口看到媒体播放器的内容?

我不确定以下内容,但我相信这可能是基于我的知识

通常在矩形区域中创建一个覆盖曲面,用于播放视频以实现硬件加速,视频卡控制它(好吧……通过directx等api的应用程序控制它)

覆盖曲面是绘制的,我们称之为gdi/窗口曲面,应用程序通常将其绘制为黑色


这就是为什么您会在背景中看到黑色/灰色。

覆盖经常使用颜色键控,而半透明窗口正在更改颜色,这会破坏颜色键。