Курсор мигает в не клиентской области при использовании IDirect3DDevice9::SetCursorProperties

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

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

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

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

1 ответ

Решение

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

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