WM_TOUCH против WM_POINTER

Какой из них я должен использовать? Я использую только Windows 8.x, поэтому меня не волнует тот факт, что WM_POINTER не имеет обратной совместимости с Windows 7 и т. д. Меня также не волнуют жесты; только о грубых прикосновениях. Единственным явным преимуществом WM_POINTER кажется то, что он объединяет сенсорный ввод и ввод с помощью мыши (но это легко обойти с помощью WM_TOUCH, поскольку события мыши можно проверить с помощью GetMessageExtraInfo()). Простота использования также не является проблемой; Я уже использую WM_TOUCH, и мне просто интересно, стоит ли мне переключиться на WM_POINTER. Больше всего меня беспокоит задержка и эффективность (приложение, связанное с игрой). Я не могу сказать, является ли WM_POINTER оболочкой над WM_TOUCH, которая имеет дополнительные накладные расходы. Любые комментарии?


person Display Name    schedule 21.05.2014    source источник


Ответы (1)


WM_TOUCH устарел. Используйте исключительно WM_POINTER. (WM_TOUCH на самом деле является оболочкой над WM_POINTER.)

GetMessageExtraInfo также известен своей хрупкостью. Вы должны вызвать его немедленно после вызова GetMessage, иначе вы рискуете вызвать промежуточные вызовы функций, выполнив COM-вызов или сделав что-то еще, что приведет к вызову GetMessage.

person Eric Brown    schedule 21.05.2014
comment
Но WM_TOUCH возвращает массив событий касания с последующим вызовом GetTouchInputInfo(), тогда как WM_POINTER* означает отдельное сообщение для каждого события касания с соответствующим вызовом оконной процедуры. Разве последний не менее эффективен в ситуации мультитач? - person Display Name; 24.05.2014
comment
@DisplayName Вы делаете это неправильно. :) Посмотрите на GetPointerFrameInfo для одновременного получения всего набора сенсорных сообщений. Если вы являетесь единственным обработчиком указателей, вы можете использовать SkipPointerFrameMessages, чтобы отбросить оставшиеся сообщения указателя для фрейма. - person Eric Brown; 24.05.2014
comment
Что такое WM_POINTER? Все, что я нашел в MSDN, — это серия идентификаторов сообщений, таких как «WM_POINTERACTIVATE», «WM_POINTERUPDATE» и т. Д., О них ли эта ветка? - person Tim Lovell-Smith; 30.05.2018
comment
@ ТимЛовелл-Смит Да. - person Eric Brown; 30.05.2018