d3d9 GetFrontBufferData中没有鼠标光标

时间:2016-09-11 14:26:06

标签: winapi direct3d ms-media-foundation direct3d9

我正在编写一个屏幕捕获应用程序。使用Direct3d 9 API捕获屏幕,使用Windows Media Foundation h264编解码器编写输出媒体文件。

该应用必须适用于从7开始的所有Windows版本。因此,选择了d3d9 API。

使用GetFrontBufferData()方法捕获图像。

除了没有捕获鼠标光标外,一切正常。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这是预期的(光标不会渲染到GetFrontBufferData调用中引用的显示表面)。你必须手动完成构图:

  1. 通过调用GetCursor来获取当前光标形状。
  2. 通过调用GetCursorPos来获取当前光标位置。
  3. 通过调用GetIconInfo找到光标的热点。在步骤4中渲染时,热点是偏移光标所必需的。
  4. 通过调用DrawIconEx渲染光标。如果检索HDC不可行,您也可以手动将光标信息写入前缓冲区(tedios,但也不是很复杂)。