Как программировать в Delphi для Microsoft Surface Pen?

Я хотел бы интегрировать возможности поверхностного пера в свое приложение. Он написан с использованием Delphi 10 Seattle. Я искал по всему Интернету и ничего не могу найти.

Кто-нибудь знает, как программировать для Pen? В частности, для захвата уровня давления, событий опускания пера, подъема пера и перемещения пера.


person Steve Maughan    schedule 31.01.2016    source источник
comment
Как это делается средствами MS?   -  person David Heffernan    schedule 01.02.2016
comment
Не пробовал ничего из этого в Delphi, но пробовали ли вы обертку WinTab? WinTab API работает с большинством ручек/планшетов, поэтому я ожидаю, что он будет совместим с Surface Pen(?). Быстрый поиск в Google показывает это ссылка TTablet v1.3.1, которая может работать - (хотя упоминается только поддержка D5, D6, D7), возможно, есть другие оболочки WinTab?   -  person Matt Coubrough    schedule 01.02.2016
comment
@DavidHeffernan Для технологии MS мало что есть. Я нашел немного для C#, но мне нужно искать больше. Я думаю, мне, вероятно, нужно будет что-то найти и преобразовать.   -  person Steve Maughan    schedule 01.02.2016
comment
@MattCoubrough спасибо - посмотрю. Я также должен упомянуть, что мне интересно знать, используется ли ластик и давление. Я думаю, что в WinTab этого не будет; но я все же посмотрю.   -  person Steve Maughan    schedule 01.02.2016
comment
Это звучит неправильно. Surface — это устройство MS. MS предоставляет SDK.   -  person David Heffernan    schedule 01.02.2016
comment
Интересные комментарии здесь. Образцы кода пера Surface Pro 2 на C++ по приведенной ниже ссылке не работают с перьями Surface Pro 3. code.msdn.microsoft.com/windowsapps/   -  person Warren P    schedule 01.02.2016


Ответы (1)


Ваше приложение должно обрабатывать WM_POINTERUPDATE< /a> сообщение.

Во время этого сообщения вы можете вызвать GetPointerPenInfo для получения информации о текущем состоянии указателя в виде POINTER_PEN_INFO структура:

POINTER_PEN_INFO = record
   pointerInfo: POINTER_INFO;
   penFlags: PEN_FLAGS;
   penMask: PEN_MASK;
   pressure: UINT32;
   rotation UINT32;
   tiltX: INT32; 
   tiltY: INT32;
end;
person Ian Boyd    schedule 29.07.2016