【问题标题】:No mouse cursor in d3d9 GetFrontBufferDatad3d9 GetFrontBufferData 中没有鼠标光标
【发布时间】:2016-09-11 14:26:06
【问题描述】:

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

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

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

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

我该如何解决这个问题?

【问题讨论】:

    标签: winapi direct3d ms-media-foundation direct3d9


    【解决方案1】:

    这是意料之中的(光标未呈现到调用GetFrontBufferData 时引用的显示表面)。您必须手动进行合成:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-02
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2012-08-20
      • 2012-08-16
      相关资源
      最近更新 更多