SendMessage WM_MOUSEMOVE не работает должным образом - PullRequest
1 голос
/ 22 октября 2010

При отправке сообщения WM_MOUSEMOVE в клиентскую область приложения (в данном случае Open Office Writer) изображение будет мерцать, как будто мышь находится над указанными координатами, но не остается в этом состоянии. Код:

PostMessage (hWndClient, WM_MOUSEMOVE, 0, MAKEWORD (x, y))

где x и y относятся к клиентской области.

Отправка этого в цикле по-прежнему не работает, так как область, выделенная событием при наведении курсора мыши, будет просто мерцать.

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Я использовал что-то вроде этого в своем главном окне и выглядит, что помогает ... в WM_MOUSEMOVE:

POINT Point;
GetCursorPos(&Point);
ScreenToClient(hHwnd, &Point);
int X = Point.x;
int Y = Point.y;
1 голос
/ 22 октября 2010

Приложение может запускаться при любых других событиях.Может быть, он хочет увидеть WM_MOUSEHOVER и т. Д. Это было давно, но я помню, что было что-то действительно полезное в том, как были реализованы некоторые из этих событий - например, был отдельный поток, который опрашивал мышь и генерировал события WM_MOUSELEAVE, когда мышьбольше не было за окном.Вас тоже может укусить что-то подобное.Также возможно, что само приложение опрашивает мышь на предмет ее истинного положения при получении события.

В зависимости от того, что вы пытаетесь сделать, возможно, вы могли бы программно перемещать мышь вместо того, чтобы просто пытаться подделатьСобытия.К сожалению, я не помню API для этого, но уверен, что это возможно.

...