Конференция "WinAPI" » подмена координат клика курсора для определенного окна [D7, WinXP]
 
  • antonn © (06.04.09 17:27) [20]
    Up, слегка другой вопрос, уже дело принципа :)
    Кто доставляет TControl сообщение WM_MOUSEMOVE?
    ставлю хук на WH_GETMESSAGE, для нужного окна, фильтрую в нем WM_MOUSEMOVE и в TMsg().pt получаю экранные координаты. Их изменение работает лишь в одном случае - когда я таскаю окно за заголовок (если TMsg().pt.x:=10 то по горизонтали окно не таскается). При этом в WMMouseMove у TControl приходит структура TWMMouseMove с локальными координатами (не искаженными), кто их преобразует и кто формирует эту структуру (или как ее отловить то?)? Сам не могу найти откуда хвост :)
  • antonn © (15.07.09 14:51) [21]
    Up? :)
  • Игорь Шевченко © (15.07.09 17:48) [22]

    > Кто доставляет TControl сообщение WM_MOUSEMOVE?


    TControl-у сообщение доставляет родительское окно (TWinControl). TWinControl-у соответственно, система - грубо говоря, через WindowFromPoint, преобразование экранных координат в клиентские и помещение сообщения в очередь потока, которому принадлежит окно
  • antonn © (15.07.09 20:41) [23]
    обидно, значит система не передает в дельфийное окно координаты сообщениями (точнее вызывается GetCursorPos())? и хуком ее не "переубедить"?
  • Игорь Шевченко © (16.07.09 01:10) [24]
    antonn ©   (15.07.09 20:41) [23]


    > значит система не передает в дельфийное окно координаты
    > сообщениями

    ClientToScreen - и у тебя экранные координаты сообщения.

    Вообще странно, WH_GETMESSAGE вызывается непосредственно перед доставкой сообщения окну и координаты там должны быть клиентские.
 
Конференция "WinAPI" » подмена координат клика курсора для определенного окна [D7, WinXP]
Есть новые Нет новых   [134433   +25][b:0][p:0]