【发布时间】:2013-08-22 15:34:33
【问题描述】:
我正在开发一个可以在 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:Direct3D
我在 msdn:http://msdn.microsoft.com/en-us/library/windows/desktop/dd797814(v=vs.85).aspx 找到了一个代码示例和一个很好的教程,但是有一个问题(一如既往)。在我看来,它使用了并非所有显卡都支持的硬件覆盖。例如:ATI Radeon HD 6XXXX。但这正是我所需要的。
有谁知道不需要硬件支持的适当解决方案?还是我做错了什么?
【问题讨论】:
-
只需使用OSD sample code 并按照您想要的方式进行调整。
-
我从没想过我应该在音频相关示例中搜索示例 :) 谢谢!我看看这个。
-
这与我在 1 中提出的解决方案完全相同。当 windows 媒体播放器处于全屏状态时,它有时有效,有时无效。我不知道为什么。
-
这对我来说很奇怪,因为如果你全屏玩一些游戏,它可以工作,但不能用其他一些游戏。
标签: windows visual-c++ overlay direct3d