Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
91 / 56 / 12
Регистрация: 02.10.2008
Сообщений: 550
1

Ограничение движения мыши

08.07.2011, 17:36. Показов 3642. Ответов 4
Метки нет (Все метки)

Всем привет......помогите реализовать: нажал один раз мышкой получил координаты (0:0) двинул куда-то мышью нажал второй раз получил координату вторую(будет углом иежду 1 координатой и 2). После чего мышь может двигать только в радиусе между 1 и 2 точкой

чето типа, карова которая привязана к колышку, которая дальше радиуса между 1 и 2 точкой не может выйти (во пример придумал )
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2011, 17:36
Ответы с готовыми решениями:

Создание бота, синхронизирующего нажатия клавиш и движения мыши
Здравстуйте! Для одной игры нужно, чтобы последовательно нажимались клавиши A и D, с частотой 100...

Бот для синхронизации нажатия клавишь и движения мыши
Здравствуйте! Есть бот, водящий мышь в лево и право, и нужно дописать его так, чтобы при движении...

Создать процедуру, которая меняет цвет формы в зависимости от направления движения мыши
Что то не могу сообразить их. Может кто подскажет. 1.Разместить на форме компонент RadioGroup с...

Ограничение движения курсора мыши прямоугольником
Есть такая программа: #include <iostream> #include <conio.h> #include <windows.h> int main()...

4
7 / 7 / 3
Регистрация: 09.07.2011
Сообщений: 21
09.07.2011, 12:15 2
нет ничего проще зная радиус где курсор мыши может ходить я бы сделал так:
Добавил таймер в обработчике которого врубил бы код
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Timer1Timer(Sender: TObject);
var curs: TPoint;
begin
  GetCursorPos(curs);
  if (curs.x>MaxX) then SetCursorPos (MaxX, curs.y);
  if (curs.x<MinX) then SetCursorPos (MinX, curs.y);
  ....
end;
и запустил бы таймер когда бы получил отклик о втором нажатии мыши юзать коммандs WM_LBUTTONDOWN WM_LBUTTONUP (вроде как)
Это так набросок. Можно конечно написать функцию которая будет проверять находять ли координаты curs.x curs.y внутри твоей заданой области или нет
0
I ♥ C#
469 / 260 / 25
Регистрация: 07.05.2010
Сообщений: 567
09.07.2011, 13:41 3
Pretender,

Claster, используйте API-функцию ClipCursor.
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.07.2011, 21:31 4
Delog
ClipCursor ограничивает курсор в прямоугольной области
0
91 / 56 / 12
Регистрация: 02.10.2008
Сообщений: 550
11.07.2011, 12:01  [ТС] 5
Продолжаю все туже тему.....поменялось немного условие: Если нажат SHIFT и делаем делаем первый клик то это координата центра (0,0), если нажата мышка второй раз, то координаты мыши при нажатии второго раза это и будет угол между 1 и 2 точкой. Ограничить движения мыши в радиусе от 1 до 2 точке, но что бы она двигалась только по ( оси X и Y относительно нулевой точки) т.е 0грудусов, 90градусов, 180градусов и 270градусов ( получается крестик)

вот накидал немного коду скажите хоть в правильном направлении иду?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if SpeedButton1.Down then
  begin
    if Button = mbLeft then
      Inc(LMouse);
 
    case LMouse of
 
  1: if (ssShift in Shift) then
    begin
      X := 0;
      Y := 0;
      bPointZerro := true;
      label3.Caption := 'Точка '+inttostr(LMouse)+': '+inttostr(X)+' '+inttostr(Y);
    end
    else LMouse := 0;
 
  2: if (ssShift in Shift) then
      begin
        X2 := X;
        Y2 := Y;
        Label4.Caption := 'Точка(угол) '+inttostr(LMouse)+': '+inttostr(X2)+' '+inttostr(Y2);
        bPointZerro := false;
      end
      else LMouse := 0;
 
    end;
  end;
end;
вроде с кликами нормально, теперь я так понимаю надо в событии OnMouseMove обработку сделать и ограничить движение мыши в этой процедуре????
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2011, 12:01

Ограничение движения объекта
Есть картинка, мы передвигаем её с клавиатуры, при помощи стрелок. Как можно ограничить...

Ограничение движения камеры
Здравствуйте!Подскажите как ограничить полёт камеры?Может создать Vector?

Ограничение движения объекта в 3D
Прошу помощи. Нужно ограничить возможную область движения для корабля в SpaceShooter-e. Для...

Ограничение движения picturebox
Всем привет, ув. Форумчане Еле как разобрался с тем чтобы picturebox следил за мышкой. и теперь я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru