Autor Tema: No puedo restringir el Tamaño de un Form!! (Subclassing)  (Leído 5281 veces)

0 Usuarios y 1 Visitante están viendo este tema.

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
No puedo restringir el Tamaño de un Form!! (Subclassing)
« en: Abril 05, 2010, 09:49:30 pm »
veran, tengo un programa que requiero que se pueda redimensionar pero que llegue hasta cierto tamaño.
lo primero que se me ocurrio es usar una Rutina (Subclassing ) para hacerlo, ya que si lo hacia desde el evento Resize del Form, se mira como Parpadeo, mi intencion con la rutina seria detectar el evento WM_SIZING (no recuerdo si es este mensaje, escribi esto en un cyber y no me traje el code), para intercerptarlo y si cumple los requrimientos, entoces se llame a la funcion original, si no entonces no se llama.
el caso es que hize una estructura de 2 elementos Integer (total 4 bytes, serian width y height), y usando copymemory las pasaba. todo perfecto (corroboré que si estaba recibiendo los valores mi estructura). pero aun si no le paso el mensaje se sigue redimensionando. Ayuda!!! (mañana pondre el code para que se entienda mejor)
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:No puedo restringir el Tamaño de un Form!! (Subclassing)
« Respuesta #1 en: Abril 05, 2010, 10:23:14 pm »
Cobein hizo algo asi... Buscalo en su web... o en recursosvisualbasic.
Miguel Núñez.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:No puedo restringir el Tamaño de un Form!! (Subclassing)
« Respuesta #2 en: Abril 05, 2010, 11:04:55 pm »
Cobein hizo algo asi... Buscalo en su web... o en recursosvisualbasic.
No es necesario dar tantas vueltas, es muy sencillo. Tenes que interceptar el mensaje WM_GETMINMAXINFO y editar la estructura q te llega por lParam.
Código: (vb) [Seleccionar]
Private Type POINTAPI
x As Long
y As Long
End Type

Private Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type

Private Const WM_GETMINMAXINFO As Long = &H24

[...]

Private Sub WndProc(ByVal bBefore As Boolean, _
                       ByRef bHandled As Boolean, _
                       ByRef lReturn As Long, _
                       ByVal lng_hWnd As Long, _
                       ByVal uMsg As Long, _
                       ByVal wParam As Long, _
                       ByVal lParam As Long, _
                       ByRef lParamUser As Long)
   
   
    If uMsg = WM_GETMINMAXINFO Then
        Dim lngX As Long
        Dim lngY As Long
       
        lngX = 1020
        lngY = 700

        RtlMoveMemory ByVal (lParam + 24), ByVal VarPtr(lngX), 4 'X
        RtlMoveMemory ByVal (lParam + 28), ByVal VarPtr(lngY), 4 'Y

        bHandled = True
    End If
En ese codigo se omite pasar el puntero a la estructura, y vice versa, ahi es mas sencillo, directamente le escribo en la estructura origen.

Saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:No puedo restringir el Tamaño de un Form!! (Subclassing)
« Respuesta #3 en: Abril 06, 2010, 11:06:16 am »
Cobein hizo algo asi... Buscalo en su web... o en recursosvisualbasic.

Entonces arreglo...  ::)

El coco, ya lo hiso...! :D
Miguel Núñez.

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Re:No puedo restringir el Tamaño de un Form!! (Subclassing)
« Respuesta #4 en: Abril 07, 2010, 04:26:50 pm »
gracias, pero aun no consigo hacerlo jalar (no se donde y como modificar el code), este es el code que tengo en un modulo. si me hacer el favor podrias corregirlo.


Código: [Seleccionar]
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Public PrevLong As Long
Private Type WH
    Width As Integer
    Height As Integer
End Type

Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim wCoord As WH
    WindowProc = CallWindowProc(PrevLong, hwnd, uMsg, wParam, lParam)
    If uMsg = &H5 Then
        Call CopyMemory(wCoord, lParam, Len(wCoord))
        Debug.Print wCoord.Width & " " & wCoord.Height
        If wCoord.Height < 400 Then wCoord.Height = 400
        If wCoord.Width < 600 Then wCoord.Width = 600
        Call CopyMemory(lParam, wCoord, Len(wCoord))
        Form1.Form_ResizeMax
    End If
   
   
End Function




 
« última modificación: Abril 07, 2010, 04:38:56 pm por xmbeat »
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:No puedo restringir el Tamaño de un Form!! (Subclassing)
« Respuesta #6 en: Abril 07, 2010, 08:17:56 pm »
...
Ni siquiera intentaste probar el codigo que te deje?, para eso la proxima ni respondo!
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Re:No puedo restringir el Tamaño de un Form!! (Subclassing)
« Respuesta #7 en: Abril 07, 2010, 08:23:36 pm »
...
Ni siquiera intentaste probar el codigo que te deje?, para eso la proxima ni respondo!
trate de usarlo pero no sabia como meterlo al proyecto
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:No puedo restringir el Tamaño de un Form!! (Subclassing)
« Respuesta #8 en: Abril 07, 2010, 10:56:36 pm »
...
Ni siquiera intentaste probar el codigo que te deje?, para eso la proxima ni respondo!

Jajaja... Che coco, tranquilo... Como el, hay muchos... Solo hay que orientarlo...!  ::)
Miguel Núñez.