Windows 7/8屏幕覆盖VC ++

时间:2013-08-20 14:22:40

标签: windows visual-c++ overlay direct3d

我正在开发一个可以在Windows中显示内容(图形,文本等)的应用程序。问题是我是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。但这正是我所需要的。

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

2 个答案:

答案 0 :(得分:1)

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

所以唯一的问题是我画完后没有把窗口带到前台。您可以致电SetWindowPos来完成此操作。尽管这个解决方案不适用于Windows 8 metro表面。

答案 1 :(得分:0)

你试过SetWindowsRgn吗?