Курсор мигает в не клиентской области при использовании IDirect3DDevice9 :: SetCursorProperties - PullRequest
1 голос
/ 20 декабря 2010

У меня есть приложение, работающее под Direct3D9. Приложение использует H3 API-интерфейс курсора Direct3D (IDirect3DDevice9::SetCursorProperties и др.) Для управления курсором. Почти все отлично работает:

  • когда внутри окна приложения отображается курсор, указанный в SetCursorProperties
  • когда за пределами окна приложения, обычный курсор ОС отображается в соответствии с требованиями рабочего стола или других окон

Проблема связана с не клиентской областью моего окна (строка заголовка, края экрана). При перемещении в области, не являющейся клиентом, кратко отображается курсор, соответствующий функции области, но как только я перестаю двигаться, снова отображается курсор, установленный в SetCursorProperties.

Как правильно использовать IDirect3DDevice9::SetCursorProperties, чтобы я получал курсоры ОС по умолчанию в моей области, не являющейся клиентом?

1 Ответ

1 голос
/ 20 декабря 2010

После экспериментов с различными вещами, следующее изменение в приложении решило проблему для меня:

  • В оконной процедуре, когда получено WM_SETCURSOR, запомните результат условия (lParam&0xffff)==HTCLIENT в глобальной переменной CursorInClient
  • Когда глобальная переменная CursorInClient имеет значение false, избегайте вызова IDirect3DDevice9::ShowCursor
...