Курсор мигает в не клиентской области при использовании IDirect3DDevice9::SetCursorProperties
У меня есть приложение, работающее под Direct3D9. Приложение использует API-интерфейс курсора Direct3D HW (IDirect3DDevice9::SetCursorProperties
и др.) для управления курсором. Почти все отлично работает
- когда внутри окна приложения отображается курсор, указанный в SetCursorProperties
- когда за пределами окна приложения, обычный курсор ОС отображается в соответствии с требованиями рабочего стола или других окон
Проблема с не-клиентской областью моего окна (строка заголовка, края экрана). При перемещении в области, не являющейся клиентом, кратко отображается курсор, соответствующий функции области, но как только я перестаю двигаться, курсор, установленный в SetCursorProperties, отображается снова.
Как правильно использовать IDirect3DDevice9::SetCursorProperties
так что я получаю стандартные курсоры ОС на моей оконной не клиентской области?
1 ответ
Решение
После экспериментов с различными вещами, следующее изменение в приложении решило проблему для меня:
- В оконной процедуре, когда
WM_SETCURSOR
получен, запомните результат условия(lParam&0xffff)==HTCLIENT
в глобальной переменнойCursorInClient
- Когда глобальная переменная
CursorInClient
ложно, избегайте звонковIDirect3DDevice9::ShowCursor