Изменить положение мыши на форме

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Изменить положение мыши на форме

Сообщение IVAN008 » 08.07.2008 (Вт) 9:45

В поиске не нашел!
Задача:
Пусть мышь, точнее курсор, лвигается по форме, горизонтально вправо.
После того, как курсор пройдет какую-то координату Х, он должен вернуться в начало формы (по гризонтали) Х = 0
Раньше я как-то это делал.... не могу вспомнить....
ПОМОГИТЕ!!!!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 08.07.2008 (Вт) 10:04

SetCursorPos
Лучший способ понять что-то самому — объяснить это другому.

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 08.07.2008 (Вт) 11:03

Спасибо, это не работает. Программирую в VB6.
Он такой функции не знает..... может это функция API????
Тогда как ее объявить??

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 08.07.2008 (Вт) 11:28

Конечно же API
Private Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long
Весь мир матрица, а мы в нем потоки байтов!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 08.07.2008 (Вт) 11:29

Догадываюсь.
Определенно это API.
В комплекте VB6 идет тулза под названием API Viewer, большая часть API-функций там задекларирована.
Но если лень сделать пару щелчков мыши, если лень ввести в гугл declare SetCursorPos... то и мне лень.
Лучший способ понять что-то самому — объяснить это другому.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 08.07.2008 (Вт) 13:03

Раньше я как-то это делал...

Oh, really?..
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 08.07.2008 (Вт) 13:35

Денис, это вот к чему?
Весь мир матрица, а мы в нем потоки байтов!

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 09.07.2008 (Ср) 12:07

Удалил.....
Последний раз редактировалось IVAN008 11.07.2008 (Пт) 8:51, всего редактировалось 1 раз.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 09.07.2008 (Ср) 12:14

IVAN008, оно конечно Спасибо за спасибо, и соответственно Пожалуйста, но вот все, что было до последнего абзаца явно лишнее.
З.Ы. Я тоже непрофессиональный программист, однако мне не лениво самому слазить в API Viewer или еще лучше в MSDN.
Весь мир матрица, а мы в нем потоки байтов!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 09.07.2008 (Ср) 13:06

А я вообще не программист! 8)
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 10.07.2008 (Чт) 11:12

Удалил....
Последний раз редактировалось IVAN008 11.07.2008 (Пт) 8:40, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.07.2008 (Чт) 14:01

Пользователь Денис действительно порой флудит не по делу. Когда-нибудь это будет оценено.
Пользователь IVAN008 действительно слишком ленив. Даже если он не знает, что такое SetCursorPos, поиск в гугле даст правильный ответ уже на первой ссылке. Описание подфорума давно следовало бы изменить, потому что помощь оказывается тому, кто сам старается разобраться, а не ждет готового решения.
IVAN008, если ты действительно готов самостоятельно искать информацию, просто не знал, с чего начать, это хорошо. Но первое впечатление было, что ты типичный лентяй, который хочет все готовое и которых тут не жалуют.
Lasciate ogni speranza, voi ch'entrate.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Сообщение awl100Alex » 11.07.2008 (Пт) 2:13

IVAN008
Затерзали тебя просто жуть... :?

Вот... набросал на скорую руку... Может это то, что тебе нужно?
Только мышку в этом примере нужно двигать на форме(!) слева направо и не очень быстро!! А то событие перехода курсора не сработает. Вообщем, это пример, а ты уже доработай его как нужно.
Чтобы было понятно, старался подробно заполнить комментами...

Код: Выделить всё
'Создаем структуру типов данных для заполнения, при вызове GetWindowRect...
Private Type RECT
    'Относительно экрана...
    Left As Long    'X
    Top As Long     'Y
    Right As Long   'dX
    Bottom As Long  'dY
End Type
'Функция для получения положения формы на экране...
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
'Функция для изменения положения курсора мышки...
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

'Ловим события мыши на форме...
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'Создаем зону перехода мышки в начало (Х = 0)
ZonaX = Me.Width - 350 'Коэффициент 350 произвольный!
'Рисуем граничную линию перехода для наглядности...
Line (ZonaX, 0)-(ZonaX, Me.Height)

'Начинаем отлов...
Select Case X 'X - текущее положение мышки на форме в Твипах
   Case Is > ZonaX
    Dim Rec As RECT
    'Получаем Left, Right, Top and Bottom нашей Form1 <=> (Me)
    GetWindowRect Me.hwnd, Rec
    'Устанавливаем мышку в начало (X = 0 <=> Rec.Left)
    ddY = Rec.Top + (Rec.Bottom - Rec.Top) \ 2 'Середина формы...
    SetCursorPos Rec.Left, ddY
End Select
End Sub 


P.S.
А еще скачай вот эту штукенцию...
http://www.devhood.com/Tools/tool_details.aspx?tool_id=563
...полезная вещь по API!
Вложения
MouseMove.rar
Реализация примера...
(4.21 Кб) Скачиваний: 41


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList