2010-12-20 2 views
1

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

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

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

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

ответ

1

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

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

Вы бы лучше слушать для нк хит тестовых сообщений, если ваш позовете showc ursor – Necrolis

Смежные вопросы