Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Узнаю координаты курсора Добавлено: 11.01.06 21:16  

Автор вопроса:  [root] | Web-сайт: bit.pirit.info
Узнаю координаты курсора и перемещаю кнопку.
Но чего то не выходит!
Если убрать * Screen.TwipsPerPixelX, тогда она перемещается в маленьком пространстве, т.е. координаты в пикселях.
Как сделать чтобы кнопка перемещалась туда где курсор?

Option Explicit
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim z As POINTAPI

Private Sub cmdStart_Click()
GetCursorPos z
cmdStart.Left = z.X * Screen.TwipsPerPixelX
cmdStart.Top = z.Y * Screen.TwipsPerPixelY
End Sub

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #1 Добавлено: 12.01.06 04:40
Нужно добавить ScreenToClient

Ответить

Номер ответа: 2
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #2
Добавлено: 12.01.06 10:52
А по конкретней можно - не понял.

Ответить

Номер ответа: 3
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #3 Добавлено: 12.01.06 11:32

Option Explicit
    Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
    Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Long, ByRef lpPoint As POINTAPI) As Long
    Private Type POINTAPI
        x As Long
        y As Long
    End Type


Private Sub Timer1_Timer()
    Dim PA As POINTAPI
    GetCursorPos PA
    ScreenToClient Me.hwnd, PA
    cmdStart.Move PA.x * Screen.TwipsPerPixelX, PA.y * Screen.TwipsPerPixelY
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #4
Добавлено: 12.01.06 12:02
Да только нужно еще вот ето добавить:

Private Sub Form_Load()
Timer1.Interval = 1
End Sub

А если нужно оцентрировать, т.е. кнопка перемещается не туда где курсор, а становится, чтобы курсор был по центру?

Ответить

Номер ответа: 5
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #5
Добавлено: 12.01.06 13:13
А вот так еще проще и лучше!
Нажимаешь на кнопку мышкой и кнопка центрируется по указателю мыши:

Private Sub cmdStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdStart.Left = cmdStart.Left + X - cmdStart.Width / 2
cmdStart.Top = cmdStart.Top + Y - cmdStart.Height / 2
End Sub

Ответить

Номер ответа: 6
Автор ответа:
 VerhoLom



Вопросов: 20
Ответов: 285
 Профиль | | #6 Добавлено: 14.01.06 14:59
А не легче использовать вместо таймера SetCapture(hWnd), ReleaseCapture - Первая вешается на мышку, вторая снимает слежку. Тогда событие NouseMove для формы (или любого другого чего) происходи даже когда курсор не над ней.

Ответить

Номер ответа: 7
Автор ответа:
 VerhoLom



Вопросов: 20
Ответов: 285
 Профиль | | #7 Добавлено: 14.01.06 15:00
Извините, очепятка вышла: MouseMove

Ответить

Номер ответа: 8
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #8 Добавлено: 15.01.06 02:19
Читайте API-Guid. И все у Вас получится.

Ответить

Номер ответа: 9
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #9
Добавлено: 15.01.06 02:32
Уже получилось! ;-)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам