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

Вниз

Мышка и Форма   Найти похожие ветки 

 
nickolayLI   (2002-12-04 14:49) [0]

Привет всем !

Подскажите плиз как реализовать чтобы корсор мышы мого перемещать только в пределах формы(окна)?

Спасибо. пока


 
Song   (2002-12-04 14:52) [1]

ClipCursor()


 
nickolayLI   (2002-12-04 15:11) [2]

Хм... а по подробнее можно ....

Спасибо. Пока.


 
Song   (2002-12-04 15:22) [3]

Поподробней в хэлпе.


 
nickolayLI   (2002-12-04 15:30) [4]

Да че-то не понятно как-то...


 
Song   (2002-12-04 15:50) [5]

Ну уж не хочешь ли чтобы я тебе пример привел по такому 2+2?

В скобках укажи указатель на структуру с типом TRect
Rect можно получить через GetWindowRect() или самому составить вручную через ф-ию Rect() или присваиванием.
К тому же у формы есть всякие TForm.ClientRect()
Вообщем.. вариантов - умри не хочу


 
nickolayLI   (2002-12-04 15:56) [6]

Да но тама именно что не TRect а PRect :(
ClipCursor(lpRect); :( и на TRect у мя ругается. :(




 
Song   (2002-12-04 16:01) [7]

:) А какое отличие между PRect и TRect? Просвети пожалуйста..


 
MBo   (2002-12-04 16:14) [8]

знаешь, что такое @?


 
Ich Hasse   (2002-12-04 18:05) [9]

GetWindowRect(..) - достаешь области формы

в нее кажись входят ссылка на окно (hWindow) и PRect

(PRect = ^TRect; - прямоугольник в памяти)

ClipCursor(Rect); Rect достаешь из процедуры GetWindowRect

и при завершении работы не забудь написать
ClipRect(nil);


 
NickolayLi   (2002-12-04 18:34) [10]

Хм... ок
и еще один тупой вопрос, где это вызывать, какую процедуру/функцию/метод перекрыть... :( (не пинайте сильно, в АПИ слабак, можно сказать 0

Спасибо. Пока.


 
Song   (2002-12-04 20:47) [11]

Да ладно не мучайся, жалко стало (только знаний тебе это не добавит!):

// Ограничить мышь
Procedure TForm1.Button1Click(Sender:TObject);
Var ARect:TRect;
Begin
ARect:=Rect(Left,Top,Left+Width,Top+Height);
ClipCursor(@ARect);
End;

// Освободить
Procedure TForm1.Button2Click(Sender:TObject);
Begin
ClipCursor(nil);
End;


 
mukha   (2002-12-04 22:23) [12]

В приведённом примере есть один существенный недостаток. Если код? приведённый в Button1Click навесить на OnCreate, то после кампиляции перемещение мыши ограничивается размерами формы при разработке, а не при выполнении и если они не совпадают, то я не завидую пользователю.Это же произойдёт и при изменении разрешения экрана. Лучше на форму бросить панель и для неё установить Align:=alClient и ограничить перемещение курсора границами панели. Пример был в FAQ.


 
Diamond Cat   (2002-12-05 03:26) [13]

2 mukha бред, был преведен пример, а уж куда и чего ставить пусть думает тот кому этот пример нужен, привязывать лишнюю панель вообще не обязательно, можно просто в onpaint сверять реальные размеры с заданными и соответственно переклипивать курсор, это снимет все объявленные вами проблемы, и кстати если уж отклипивать курсор то лучше продублировать это в onclose формы.


 
nickolayLI   (2002-12-05 07:20) [14]

2Song: пасиб большой, и по счет знаний, я с апи практически можно сказать впервой сталкиваюсб :(




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

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

Наверх





Память: 0.47 MB
Время: 0.009 c
3-62356
Che
2002-12-24 00:46
2003.01.20
Reset


4-62919
cult
2002-12-04 13:06
2003.01.20
Где или Как узнать код сообщения?


4-62890
Разведчик
2002-12-01 23:51
2003.01.20
Работа с SysListView32?


14-62747
VJar
2003-01-04 13:45
2003.01.20
Ищу компонент


1-62612
HelpMe
2003-01-09 13:24
2003.01.20
Как это сделать?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский