我正在开发一个可以在 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。但这正是我所需要的。
有谁知道不需要硬件支持的正确解决方案?还是我做错了什么?