Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Вниз

Перемещение мыши относительно координат чужого окна   Найти похожие ветки 

 
HF-Trade ©   (2006-06-18 17:22) [0]

Здравствуйте господа. Как реализовать вот такой сабж.
(Мне надо чтоб указатель мыши переместился в окне(чужом) относительно его координат.)
Пишу так -

Var
XXX: Hwnd;
X,Y: Integer;
MyMouse: TPoint;

Begin
XXX:=FindWindow("XXXXX",0);

GetCursorPos(MyMouse);

Windows.ScreenToClient(XXX,MyMouse);

X:=MyMouse.X;
Y:=MyMouse.Y;

PostMessage(XXX,WM_MOUSEMOVE,0,MakeLong(X,Y));

end;

???
Что не правильно делаю?


 
GanibalLector ©   (2006-06-18 19:14) [1]

Не понял условие задачи.
Но все же попробую промедитировать :


 GetCursorPos(P);
 P:=ScreenToClient(P); // !!!


 
HF-Trade ©   (2006-06-18 19:36) [2]

Есть окно ХХХ, я получаю координаты курсора (X,Y), в этом окне. Затем мне нужно чоб при нажатии на кнопку -
Окно ХХХ стало поверх всех, а курсор переместился в точку Х,Y.

Если делать так -

SetCursorPos(X,Y)

то курсор перемещаеться относительно координат экрана, а мне надо именно окна ХХХ...


 
Юрий Зотов ©   (2006-06-18 19:54) [3]

> HF-Trade ©   (18.06.06 19:36) [2]

А где Вы перемещаете курсор? В Вашем коде он где был, там и остается.


 
HF-Trade ©   (2006-06-18 20:23) [4]

Прошу прощения - так тоже пробовал

PostMessage(XXX,WM_SETCURSOR,0,MakeLong(X,Y));

...


 
HF-Trade ©   (2006-06-19 15:33) [5]

А да, забыл совсем -
Координаты я получаю отдельно... тут просто все в мешанине кинул -

Var
XXX: Hwnd;
X,Y: Integer;
MyMouse: TPoint;

При создании формы -

XXX:=FindWindow("XXXXX",0);

Получаю координаты (Хот Кей Ctrl+A в TMainMenu) -

GetCursorPos(MyMouse);
Windows.ScreenToClient(XXX,MyMouse);
X:=MyMouse.X;
Y:=MyMouse.Y;

При нажатии на кнопку -

PostMessage(XXX,WM_MOUSEMOVE,0,MakeLong(X,Y));

Пробовал и так -

PostMessage(XXX,WM_SETCURSOR,0,MakeLong(X,Y));

Курсор остаеться на на месте....


 
begin...end ©   (2006-06-19 15:49) [6]

> HF-Trade ©   (18.06.06 19:36) [2]

> Если делать так -
> SetCursorPos(X,Y)
> то курсор перемещаеться относительно координат экрана, а
> мне надо именно окна ХХХ...

Значит, нужно перевести координаты относительно окна в экранные координаты. Для этого есть функция ClientToScreen (модуль Windows).

А причём здесь WM_SETCURSOR, совершенно неясно. Это вообще нотификационное сообщение, и для изменения позиции курсора оно служить не может.



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

Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
2-1150979987
*delete*
2006-06-22 16:39
2006.07.09
как проверить создание папки


3-1147266021
Morrison
2006-05-10 17:00
2006.07.09
Index is read-only. Что делать?


15-1150106759
Tirael
2006-06-12 14:05
2006.07.09
калькулятор


2-1150729557
Gizza
2006-06-19 19:05
2006.07.09
Колическтво дней в месяце.


2-1150540333
brus
2006-06-17 14:32
2006.07.09
Дата DataTimePicker





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский