Вниз
Скачать: CL | DM;

Здраствуйте ещё раз... ! На тему SetCapture... И определения   Найти похожие ветки 

← →
EugenCFG   (2003-12-23 22:32) [0]

координат мыши в любом месте экрана. function SetCapture(Wnd: HWnd); HWnd;

Уже прекрасно понимаю как определить координаты на форме и в области non client. Но каким образом состыковать эту функцию с внешним миром? Т.е. при перемещении мыши по области рабочего стола хотелось бы получить координаты от верхнего левого угла. (Какой-нибудь Label на форме отображает реальные координаты курсора, где бы он не находился).

Самые главный вопрос это на какое событие? FormMouseMove, указанный в событиях формы не подходит.

Надо ловить сообщения от мышки? Пробовал. Максимально, что подходит из найденного это WM_NCHITTEST. Перемещение мыши в любом месте экрана). Это сообщение генерируется драйвером мыши при любых перемещениях мыши. Период возникновения сообщений WM_NCHITTEST зависит от скорости перемещения мыши, параметров драйвера и т.д. Но оно как оказалось не поможет... потому что сообщение WM_NCHITTEST, обычно передается функции DefWindowProc. Получив это сообщение, функция DefWindowProc определяет положение курсора мыши относительно расположенных на экране объектов и возвращает только то, что связанно с формой.

Есть такое сообщение от мышки WM_NCHITTEST (Перемещение мыши в любом месте экрана). Это сообщение генерируется драйвером мыши при любых перемещениях мыши. Период возникновения сообщений WM_NCHITTEST зависит от скорости перемещения мыши, параметров драйвера и т.д. Но оно как оказалось не поможет...

Мастера, помогите... а то уже и не знаю, что делать.


← →
alex-drob ©   (2003-12-23 22:55) [1]

var p:tpoint;
begin
windows.GetCursorPos(p);
label1.Caption:=inttostr(p.X);
end;


← →
Юрий Зотов ©   (2003-12-23 23:11) [2]

Боюсь, что SetCapture здесь не поможет. Вот почему (из описания SetCapture):

If the mouse cursor is over a window created by another thread , the system will direct mouse input to the specified window only if a mouse button is down .

Only the foreground window can capture the mouse. When a background window attempts to do so , the window receives messages only for mouse events that occur when the cursor hot spot is within the visible portion of the window . Also, even if the foreground window has captured the mouse, the user can still click another window, bringing it to the foreground.

А вот что ТОЧНО поможет - так это глобальный хук на мышь с отловом WM_MOUSEMOVE или WM_SETCURSOR.

См. SetWindowsHookEx и ( обязательно! ) статью Алексея Павлова на этом сайте.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.016 c
9-25169
At
2003-06-16 13:35
2004.01.09
Стрельба


1-25283
OldJek
2003-12-12 13:51
2004.01.09
Подскажите, плз, как сделать саморасшифровывающийся текст?


14-25561
Fktrc
2003-12-18 14:35
2004.01.09
Куча кодировок Unicode


1-25406
Иваныч
2003-12-24 09:54
2004.01.09
Вызов процедуры!!!


1-25356
афвуд
2003-12-25 18:13
2004.01.09
Search Path




   Наверх