Visual Basic - Formulario MDI

Life is soft - evento anual de software empresarial
 
Vista:

Formulario MDI

Publicado por Elena (11 intervenciones) el 23/06/2008 18:10:20
Hola, estoy haciendo una aplicación que tiene como formulario principal un formulario MDI, e intento eliminar los botones de minimizar, maximizar y cerrar, ya que no quiero que la apliación pueda controlarse desde ahí, pero todo lo que pruebo me da errores. El código que tengo hasta ahora es este.

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

Const ws_minimizebox = &H20000
Const ws_maximizebox = &H10000
Const gwl_style = (-16)

Const mf_byposition = &H400
Const mf_remove = &H1000
Private Declare Function drawmenubar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function getmenuitemcount Lib "user32" (ByVal hmenu As Long) As Long
Private Declare Function getsystemmenu Lib "user32" (ByVal hwnd As Long, ByVal brevert As Long) As Long

Private Declare Function removemenu Lib "user32" (ByVal hmenu As Long, ByVal nposition As Long, ByVal wflags As Long) As Long

Private Sub mdiform_load()
Dim l As Long
Dim hmenu As Long
Dim menuitemcount As Long

'Para que no se vean los botones
l = getwindowlong(Me.hwnd, gwl_style)
l = l And Not (ws_minimizebox)
l = l And Not (ws_maximizebox)
l = setwindowlong(Me.hwnd, gwl_style, l)

'Para quitar las opciones de menú
hmenu = getsystemmenu(Me.hwnd, 0)
If hmenu Then
Call removemenu(hmenu, 2, mf_remove Or mf_byposition)
Call removemenu(hmenu, 2, mf_remove Or mf_byposition)
Call removemenu(hmenu, 2, mf_remove Or mf_byposition)
Call drawmenubar(Me.hwnd)
End If
End Sub

¿Alguna ayuda?... gracias por adelantado.


ELENA
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Formulario MDI

Publicado por lolo (163 intervenciones) el 23/06/2008 20:21:55
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex 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 GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hmenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

Private Const MF_BYPOSITION = &H400&
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Private Const GWL_STYLE = (-16)

Private Sub MDIForm_Load()
' para que no se vean los botones
Dim lRet As Long
lRet = GetWindowLong(Me.hWnd, GWL_STYLE)
lRet = lRet And Not (WS_MINIMIZEBOX)
lRet = lRet And Not (WS_MAXIMIZEBOX)
lRet = SetWindowLong(Me.hWnd, GWL_STYLE, lRet)
' para que no se vean las opciones del menú
Dim i As Integer, ElMenu As Long
ElMenu = GetSystemMenu(Me.hWnd, 0)
For i = 8 To 0 Step -1
lRet = DeleteMenu(ElMenu, i, MF_BYPOSITION)
Next
End Sub

Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
' para evitar cerrar el form si se pulsa Alt-F4
If UnloadMode = 0 Then Cancel = True
End Sub

Si quieres ejecutar el ejemplo, pon un botón de salir sino vas a tener que dar Ctrl+Alt+Supr
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Formulario MDI

Publicado por melvin G (20 intervenciones) el 11/04/2009 15:30:01
hola...y antes que nada quisiera saber cuanto tiempo tienes estudiando programacion?....

todos los form en la ventana de propiedades todos los form tienen una propioedad que se llama si no mal recuerdo controlbox,(eso se encuentra casi en el principio de la lista) y tambien tienen otras propiedades mas que son para quitar solo el boton minimisar, maximizar o tal como el preogramador quiera, para el boton minimizar la propiedad se llama miniButton y para el de maximizar la propiedad se llama maxButton...

espero con ganas y fe que esto te alla ayudado y que jamas dudes en buscar ayuda, que para eso estamos...

Adios...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar