Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: 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 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
9-25174
mrk
2003-06-15 11:59
2004.01.09
как загузить 3ds фаил с текстурой на чистом opengl?


1-25403
Sirakuz
2003-12-24 18:13
2004.01.09
Поведение OwnerDrawVariable ListBox при докировании


4-25638
npAKTuk
2003-11-07 06:43
2004.01.09
Как совершить перехват Message?


8-25449
malkolinge
2003-09-06 15:01
2004.01.09
Flasah


8-25452
mod
2003-09-09 14:17
2004.01.09
Вопрос по картинкам