【问题标题】:What is the real desktop background HWND?什么是真正的桌面背景HWND?
【发布时间】:2015-01-24 04:27:37
【问题描述】:

我想编写一个使用 OpenGL 创建动画桌面背景的程序。因此我需要知道包含桌面图片的 HWND。完美将是我如何找到该特定窗口的代码示例。

【问题讨论】:

  • GetDesktopWindow 没剪?
  • 没有。 GetDesktopWindow() 不是包含桌面背景的窗口。我试过了。
  • 我想你要找的是这个stackoverflow.com/questions/14186400/…
  • 不直接。我不想将桌面设置为静态图片,我想在其上实时为 3D 对象设置动画。我已经看到了,但这不是我想要的。
  • GetDC(NULL) 为您提供主要上下文,不确定背景图像是否可以通过 api 访问。但你可以试试这个:codeproject.com/Questions/588027/…

标签: c++ windows opengl


【解决方案1】:

如果你仔细阅读文档你会发现你不能在根/桌面窗口设置像素格式。桌面窗口的 DC 也不是独占的。这两种约束都无法直接在桌面窗口上创建 OpenGL 上下文。另请注意,对于典型的 Windows shell (explorer.exe),桌面实际上是一个 Win32 图标视图,由 explorer.exe 进程拥有并且是桌面窗口的子窗口。

您可以做的是创建一个与桌面窗口大小相同的 FBO,其像素格式与桌面窗口的 DC 兼容。然后渲染到 FBO 将其内容读入 DIBSection 使用 CreateDIBPatternBrushPt 创建一个 HBRUSH 并使用 SetClassLongPtr 设置桌面窗口的背景画笔。

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多