Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: E N T E R en Septiembre 23, 2011, 12:51:24 pm

Título: Mover con el mouse ucImage
Publicado 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.

Código: [Seleccionar]
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.
Título: Re:Mover con el mouse ucImage
Publicado por: seba123neo en Septiembre 23, 2011, 09:44:32 pm
podes agregarle al ucImage una propiedad que se devuelva asi mismo el Handle del usercontrol.

algo como:

Código: [Seleccionar]
Public Sub Hwnd()
Hwnd = Usercontrol1.Hwnd
End Sub

saludos.
Título: Re:Mover con el mouse ucImage
Publicado por: E N T E R en Septiembre 23, 2011, 10:35:47 pm
Ok, lo voy a probar camarada gracias
Título: Re:Mover con el mouse ucImage
Publicado por: LeandroA en Septiembre 24, 2011, 06:03:57 am
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.