Set Cursor 2

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

Set Cursor 2

Сообщение darkich » 05.07.2003 (Сб) 0:48

Хочу сразу извинится у модераторов форума за то что не продолжаю начатаю тему - просто обычно туда не ходють :?
у меня вопрос такого плана: (мож кто знает...)
благодоря Cyrax'у :D получился кодик который центрирует курсор мыша над серединой нужного мне объекта (в данном случае над такстовым полем) независомо от положения формы и разрешения - код разместил в модуль он таков:

Option Explicit
Public Zapis, AllText, Primech As String

Private Type POINTAPI
x As Long
y As Long
End Type

Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, _
ByVal y As Long) As Long

Private lpPoint As POINTAPI



Sub SetMouse()
Dim visota, shirina

With frmGlavn

visota = (.TxtSerial.Height / 2) / Screen.TwipsPerPixelY
shirina = (.TxtSerial.Width / 2) / Screen.TwipsPerPixelX

lpPoint.x = ((.Left + .TxtSerial.Left) + ((.Width - .ScaleWidth) / 2)) / _
Screen.TwipsPerPixelX + shirina

lpPoint.y = ((.Top + .TxtSerial.Top) + ((.Height - .ScaleHeight) - _
((.Width - .ScaleWidth) / 2))) / Screen.TwipsPerPixelY + visota

End With
Call SetCursorPos(lpPoint.x, lpPoint.y)

End Sub


вобщем то всё работает :D , но есть одна особенность :( - если я у формы
на которой размещается нужный мне объект выставляю свойство StartUpPosition как CenterScreen то курсор висит ужо в другом месте с погрешностью примерно в пикселов 15-20 по x координате и 5-10 по y.
кто-нибудь может объяснить сей феномен :?:

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 07.07.2003 (Пн) 5:29

использовать свойство StartUpPosition не рекомендую, так как оно действует только на то разрешение при котором компилился проект. т.е. если у пользователя будет такое же разрешение, что и у тебя, то все впорядке, а если другое, то форма уедет от центра.
лучше используй такой метод
Код: Выделить всё
Private Sub Form_Load()
    Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
End Sub

тоже не зависит от разрешения.
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

darkich
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 13.06.2003 (Пт) 13:10
Откуда: Великий Новгород

Сообщение darkich » 07.07.2003 (Пн) 8:57

усё ясно
благодарствую за помощь!


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

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

Сейчас этот форум просматривают: Google-бот и гости: 23

    TopList