0

我正在开发一个可以在 Windows 中显示诸如 OSD 之类的东西(图形、文本等)的应用程序。问题是我是 Windows 编程的新手,我找不到任何合适的解决方案。

我试过的:

1:我尝试创建一个带有WS_EX_LAYERED标志的分层窗口:

CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_TOPMOST | WS_EX_TOOLWINDOW, szWindowClass, NULL, WS_POPUP | WS_VISIBLE | WS_SYSMENU, 0, 0, 0, 0, hWndDesktop, NULL, hInstance, NULL);

这种方法的问题是一切正常,我可以在屏幕上绘制任何图像或文本,直到我不在其他应用程序中全屏显示。例如播放视频。

经过大量搜索后,我找到了解决我问题的其他方法:

2:直接3D

我在 msdn 找到了一个代码示例和一个很好的教程:http: //msdn.microsoft.com/en-us/library/windows/desktop/dd797814 (v=vs.85).aspx ,但是有一个问题(如总是)。在我看来,它使用了并非所有显卡都支持的硬件覆盖。例如:ATI Radeon HD 6XXXX。但这正是我所需要的。

有谁知道不需要硬件支持的正确解决方案?还是我做错了什么?

4

2 回答 2

1

我解决了这个问题。我希望它对某人有帮助:

所以唯一的问题是,在我绘制它之后,我没有将窗口带到前台。您可以通过调用SetWindowPos. 尽管此解决方案不适用于 Windows 8 Metro Surface。

于 2013-08-24T09:48:53.283 回答
0

您是否尝试过SetWindowsRgn

于 2013-08-28T20:20:33.533 回答