2016-09-11 12 views
1

Я пишу приложение для захвата экрана. Экран захвачен с использованием Direct3d 9 API, а файл выходного носителя написан с использованием кодека Windows Media Foundation h264.Нет курсора мыши в d3d9 GetFrontBufferData

Приложение должно работать со всеми версиями Windows начиная с 7. Поэтому был выбран API d3d9.

Изображение взято с использованием метода GetFrontBufferData().

Все работает нормально, за исключением того, что NO курсор мыши не захвачен.

Как это исправить?

ответ

2

Этого следует ожидать (курсор не отображается в поверхности дисплея, на который ссылаются в вызове GetFrontBufferData). Вам необходимо сделать композицию вручную:

  1. Извлеките текущую форму курсора, вызвав GetCursor.
  2. Получить текущую позицию курсора, вызвав GetCursorPos.
  3. Найдите точку доступа курсора, вызвав GetIconInfo. Точка доступа необходима для смещения курсора при рендеринге на этапе 4.
  4. Проведите курсор, вызывая DrawIconEx. Если получение HDC невозможно, вы также можете вручную записать информацию курсора в передний буфер (tedios, но не совсем сложно).