c++ - 在没有窗口的windows桌面上绘制OpenGL

标签 c++ windows opengl desktop cube

我见过这样的事情,我想知道这是否可能,比如说我运行我的应用程序 它会在它下面的任何地方显示渲染。

基本上,在没有窗口的情况下在屏幕上呈现。

可能还是谎言?

注意:要在 Windows 和 C++ 中执行此操作。

最佳答案

可以使用您的应用程序在其他应用程序的窗口上绘图。一旦你找到了你想要的窗口,你就拥有了它的 HWND,然后你就可以像使用你自己的窗口一样使用它来进行绘图。但由于该窗口不知道您已完成此操作,因此当它尝试重绘自己时,它可能会弄乱您在其上绘制的任何内容。

有一些非常复杂的方法可以解决这个问题,其中一些涉及使用窗口“ Hook ”来拦截发送到该窗口的绘图消息,这样您就可以知道它何时重绘,以便您也可以进行重绘。

另一种选择是在窗口上使用裁剪区域。这可以让您给窗口一个不寻常的形状,并且它后面的一切看起来仍然正确。

还有一些方法可以接管桌面背景窗口的绘制,您实际上可以运行一个在桌面背景上绘制动画和东西的应用程序(当桌面仍然可用时)。至少,这在 XP 之前是可能的,不确定它在 Vista/Win7 中是否已经改变。

不幸的是,所有这些选项都太复杂了,如果没有关于您正在尝试做什么的更多信息,无法深入研究。

关于c++ - 在没有窗口的windows桌面上绘制OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935513/

相关文章:

windows - PowerShell 3 的文件扩展名

c++ - Windows 8 SDK 库位置

iphone - 如何在iPhone上实现全场景抗锯齿

python - 读取文件,在 windows 或 linux 上的结果不同

c++ - 三角扇有多少个顶点用opengl

c++ - Clang-cl.exe 和 constexpr 深度

c++ - C++中的多个类定义错误,我的头文件有问题吗?

c++ - 将类对象传递给线程

c++ - 选择哪个 Visual C/C++ 运行时库?

java - 驱动程序回调中 JNI 调用失败