Comments 18
Я знаю что такое Delphi XE4, но просто ХЕ4 вводит в ступор. Просмотрев всё до хабраката так и не нашел расшифровки, зашел внутрь, увидел Delphi код и понял, что речь именно о делфи.
Да, посмотреть теги не удосужился, каюсь, но как-то непонятно, что ли. Не сочтите за труд хотябы в заголовке поставить Delphi?
А за статью спасибо, почитаю на досуге, любопытная тема очень затронута.
Да, посмотреть теги не удосужился, каюсь, но как-то непонятно, что ли. Не сочтите за труд хотябы в заголовке поставить Delphi?
А за статью спасибо, почитаю на досуге, любопытная тема очень затронута.
Потрясающий материал. Просто нет слов, насколько детально вы все описали.
TGestureEvent я бы сделал анонимным типом (reference to ptocedure), это бы ничуть не изменило функционал, позволив сделать в некоторых случаях код легче читаемым и модифицируемым на ходу. Мелочь, а приятно.
Спасибо, интересная статья.
Статья отличная, приятно читать.
В Delphi XE7 я так понимаю это все есть из коробки и не нужно столько усилия?
В Delphi XE7 я так понимаю это все есть из коробки и не нужно столько усилия?
Добавил небольшое изменение кода для совместимости с Windows 8.
Если грубо, то в семерке сообщение WM_TOUCH отправляются окну через PostMessage:
а в восьмерке работает какой-то свой хук, мешающий нашему:
Если грубо, то в семерке сообщение WM_TOUCH отправляются окну через PostMessage:
CallStack
uSimple.TdlgSimpleTouchDemo.WmTouch((1637852, 5993380, 1637852, 42717168, 29604, 91, (), 64988, 24, (), 53232, 651, ()))
Vcl.Controls.TControl.WndProc((1637852, 42717168, 0, 1637676, 53232, 651, (), 0, 0, (), 64812, 24, ()))
Vcl.Controls.TWinControl.WndProc((576, 1, 252772352, 0, 1, 0, (), 0, 3857, (), 0, 0, ()))
Vcl.Forms.TCustomForm.WndProc((576, 1, 252772352, 0, 1, 0, (), 0, 3857, (), 0, 0, ()))
Vcl.Controls.TWinControl.MainWndProc(???)
System.Classes.StdWndProc(3936444,576,1,252772352)
:766a62fa; C:\Windows\syswow64\USER32.dll
:766a6d3a USER32.GetThreadDesktop + 0xd7
:766a77c4; C:\Windows\syswow64\USER32.dll
:766a788a USER32.DispatchMessageW + 0xf
Vcl.Forms.TApplication.ProcessMessage(???)
:005ac2e0 TApplication.ProcessMessage + $F8
а в восьмерке работает какой-то свой хук, мешающий нашему:
CallStack
uSimple.TdlgSimpleTouchDemo.WmTouch((1635260, 5993356, 1635260, 42979312, 29580, 91, (), 62396, 24, (), 53232, 655, ()))
Vcl.Controls.TControl.WndProc((1635260, 42979312, 267911168, 1635084, 53232, 655, (), 0, 4088, (), 62220, 24, ()))
Vcl.Controls.TWinControl.WndProc((576, 1, 267911168, 0, 1, 0, (), 0, 4088, (), 0, 0, ()))
Vcl.Forms.TCustomForm.WndProc((576, 1, 267911168, 0, 1, 0, (), 0, 4088, (), 0, 0, ()))
Vcl.Controls.TWinControl.MainWndProc(???)
System.Classes.StdWndProc(986744,576,1,267911168)
:77c77834 user32.CallNextHookEx + 0x97
:77c77a9a; C:\WINDOWS\SysWOW64\user32.dll
:77c77bed; C:\WINDOWS\SysWOW64\user32.dll
:77cccc33; C:\WINDOWS\SysWOW64\user32.dll
:77ecc692 ntdll.KiUserCallbackDispatcher + 0x2e
:77ce629c; C:\WINDOWS\SysWOW64\user32.dll
:77c7d2c7; C:\WINDOWS\SysWOW64\user32.dll
:77c7d400; C:\WINDOWS\SysWOW64\user32.dll
:77cc5bf6; C:\WINDOWS\SysWOW64\user32.dll
:609b5207; C:\WINDOWS\SysWOW64\Ninput.dll
:609aeb76; C:\WINDOWS\SysWOW64\Ninput.dll
:609aed0f; C:\WINDOWS\SysWOW64\Ninput.dll
:609a0b37; C:\WINDOWS\SysWOW64\Ninput.dll
:609a0d33; C:\WINDOWS\SysWOW64\Ninput.dll
:609ae8e2; C:\WINDOWS\SysWOW64\Ninput.dll
:6099ef78; C:\WINDOWS\SysWOW64\Ninput.dll
:6099e7a8; C:\WINDOWS\SysWOW64\Ninput.dll
:6099e9b2; C:\WINDOWS\SysWOW64\Ninput.dll
:6099f460; C:\WINDOWS\SysWOW64\Ninput.dll
:60987220; C:\WINDOWS\SysWOW64\Ninput.dll
:77ca3ffa; C:\WINDOWS\SysWOW64\user32.dll
:77ca925e; C:\WINDOWS\SysWOW64\user32.dll
:77c791e8; C:\WINDOWS\SysWOW64\user32.dll
:77c77834 user32.CallNextHookEx + 0x97
:77c77a9a; C:\WINDOWS\SysWOW64\user32.dll
:77c7ce71 user32.CallWindowProcW + 0x8b
Vcl.Controls.TWinControl.DefaultHandler(???)
:005207e3 TWinControl.DefaultHandler + $EB
:005206d2 TWinControl.WndProc + $5CA
:005a2c3a TCustomForm.WndProc + $612
:0051fd13 TWinControl.MainWndProc + $2F
:004c4e92 StdWndProc + $16
:77c77834 user32.CallNextHookEx + 0x97
:77c7930f; C:\WINDOWS\SysWOW64\user32.dll
:77c7988e; C:\WINDOWS\SysWOW64\user32.dll
:77c798f1 user32.DispatchMessageW + 0x10
Круто, что есть и толковые программисты на Delphi :)
Ну что значит на Delphi? :)
Я веду проекты помимо Delphi как на сях, так и целиком писанные на ассемблере, включая драйверы уровня ядра :)
Язык не панацея, он не может показать уровень подготовки разработчика — это просто инструмент :)
Я веду проекты помимо Delphi как на сях, так и целиком писанные на ассемблере, включая драйверы уровня ядра :)
Язык не панацея, он не может показать уровень подготовки разработчика — это просто инструмент :)
И тем не менее примеров грамотного кода на этом языке в сети не так уж много ) Так что вы делаете полезное дело, выкладывая это тут.
Спасибо :)
Возможно Вы где-то не там смотрите :) У меня вот много знакомых, в том числе и размещающих код в сети, пишут на делфи, как и я сам. Грамотного кода прилично, просто чаще попадается плохой. Но оно так на любом языке, увы.
В своё время искал примеры кода на HLSL (шейдеры), так простите говнокода было найдено неимоверное количество, а хорошего довольно мало.
Очевидно, что когда ты хорошо знаешь язык, стараешься придерживаться форматирования и конвенций именования, то критерии хороший\плохой код довольно объективными становятся и начинаешь ощущать что да как. А пока язык знаешь не очень хорошо, то хороший код не отличить от плохого чаще всего. Ну уж совсем про мрак я не говорю.
В своё время искал примеры кода на HLSL (шейдеры), так простите говнокода было найдено неимоверное количество, а хорошего довольно мало.
Очевидно, что когда ты хорошо знаешь язык, стараешься придерживаться форматирования и конвенций именования, то критерии хороший\плохой код довольно объективными становятся и начинаешь ощущать что да как. А пока язык знаешь не очень хорошо, то хороший код не отличить от плохого чаще всего. Ну уж совсем про мрак я не говорю.
Sign up to leave a comment.
Поддержка MultiTouch + Gestures в Delphi XE4