Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: E N T E R en Septiembre 23, 2011, 12:51:24 pm
-
Como puedo mover el ucImage con el mouse. Encontré este método que resulta muy bien como quiero, digo como quiero por que puedo mover otro picture sobre otro. Pero el ucImage no tiene hwnd y no puedo mover con este metodo.
Const WM_SYSCOMMAND As Long = &H112&
Const MOUSE_MOVE As Long = &HF012&
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Sub MoverControl()
Dim res As Long
ReleaseCapture
res = SendMessage(ucImage1.hwnd, WM_SYSCOMMAND, MOUSE_MOVE, 0)
End Sub
Private Sub ucImage1_Click(ByVal Button As Integer)
If Button = vbLeftButton Then
MoverControl
End If
End Sub
Quiero usar este método por que voy a tener varios ucImage en el Form.
-
podes agregarle al ucImage una propiedad que se devuelva asi mismo el Handle del usercontrol.
algo como:
Public Sub Hwnd()
Hwnd = Usercontrol1.Hwnd
End Sub
saludos.
-
Ok, lo voy a probar camarada gracias
-
Hola no le vas a poder agregar esa propiedad ya que ese tipo de ventanas no tienen hwnd.
pero no hace falta es tan simple como esto
Option Explicit
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Static stcX As Long
Static stcY As Long
If Button = 1 Then
Image1.Move Image1.Left + x - stcX, Image1.Top + y - stcY
Else
stcX = x
stcY = y
End If
End Sub
yo lo hice con un imagen comun supongo que el ucimage tiene la misma propiedad, lo que si te voy avisando que esto parpadea como loca.