Главная страница
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.017 c
6-25467
X-Disa
2003-11-09 12:35
2004.01.09
Stream


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


14-25583
Вася Добрый
2003-12-17 10:52
2004.01.09
IBExpert+Firebird


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


14-25527
Knight
2003-12-19 09:16
2004.01.09
Атомные часы