Hola a todos
tengo un dll del que obtengo un form y lo meto dentro de un PictureBox y también desactivo el foco para que no parpadee la ventana al cambiar el foco y funciona todo bien.
Yo quería usar lo pero para controles sueltos e conseguido instanciar lo en donde yo quiero pero dejan de funcionar los eventos.
lo probé con un simple botón con un MsgBox simple que al dar le click y al instanciar lo por suelto no funciona el evento.
Es una prueba seria también para controles personalizados.
Como podría recibir los eventos.
Un saludo y gracias
código que uso para instanciar la ventana dentro del PictureBox .
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function CloseWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Const WM_DESTROY = &H2
Private Const WM_CLOSE = &H10
Const SHOWMAXIMIZED_eSW = 3&
Const WS_HIDE = 0
Const WS_NORMAL = 1
Const GWL_STYLE = (-16)
Const WS_CHILD = &H40000000
Const WS_EX_CLIENTEDGE = &H200
Public Sub MoveWindowInPictureBox_expecifico(formmover As Form, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long)
' MsgBox formmover.hwnd
MoveWindow formmover.hwnd, x, y, nWidth, nHeight, 1
End Sub
Public Sub MoveWindowInPictureBox_cero(formmover As Form)
' MsgBox formmover.hwnd
MoveWindowInPictureBox formmover, 0, 0
End Sub
Public Sub MoveWindowInPictureBox(formmover As Form, ByVal x As Long, ByVal y As Long)
' MsgBox formmover.hwnd
MoveWindow formmover.hwnd, x, y, formmover.Width, formmover.Height, 1
End Sub
Public Sub SetParentToPictureBox(hwndwindow As Long, hwndPictureBox As Long)
Call SetParent(hwndwindow, hwndPictureBox)
SetWindowLong hwndwindow, GWL_STYLE, GetWindowLong(hwndwindow, GWL_STYLE) Or WS_CHILD
End Sub
Public Sub ShowWindowInPictureBox_NORMAL(hwndwindow As Long)
Call ShowWindow(hwndwindow, WS_NORMAL)
End Sub
Public Sub ShowWindowInPictureBox_MAXIMIZE(hwndwindow As Long)
Call ShowWindow(hwndwindow, SHOWMAXIMIZED_eSW)
End Sub
Public Sub HideWindowInPictureBox(hwndwindow As Long)
Call ShowWindow(hwndwindow, WS_HIDE)
End Sub
Public Sub CloseWindowInPictureBox(hwndwindow As Long)
SendMessage hwndwindow, WM_CLOSE, 0, 0
End Sub
Public Sub ResetParentToPictureBox(hwndwindow As Long)
Call SetParent(hwndwindow, 0)
End Sub