Disculpa que te moleste de nuevo, quisiera saber si me puedes ayudar tengo que hacer en un formulario MDI bloquer el maximizado de ventana, el minimizado y el cerrado de la misma. Ademas de poder poner una imagen en el centro del formulario MDI.
2 respuestas
Respuesta de athrarn
1
1
athrarn, - Sistemas Operativos : - MS-DOS, Windows 3
Así me gusta preguntas sencillas y cortas... ;-) Veamos. Para bloquear el tamaño de una ventana en el form_resize ponle esto : Private Sub MDIForm_Resize() Me.Height = TAMAÑO Me.Width = TAMAÑO End Sub Si no quieres que se minimize ni maximize entonces ponle esto : Te declaras estas funciones de las SDK Private Const WS_MINIMIZEBOX = &H20000 Private Const WS_MAXIMIZEBOX = &H10000 Private Const GWL_STYLE = (-16) 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 Y le pones esto en el Form Load : Private Sub MDIForm_Load() Dim L as Long 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) End Sub
Bien... para bloquear las opciones de Maximizado y Minimizado... de un MDI... te mando este articulo: Realmente es sorprende que los diseñadores de VB no hayan provisto a las ventanas MDI de propiedades como ControlBox, MaxButton y MinButton, igual que las ventanas normales. De acuerdo, normalmente no se necesitan cambiar estos atributos, pero existen casos en los que sí es interesante poder hacerlo. Por ejemplo, una aplicación MDI que se ejecute a pantalla completa y que no queramos que el usuario pueda minimizar o cambiar su tamaño. Cuando una aplicación Windows crea una ventana, le pasa un parámetro que especifica su estilo de creación a la función de la API Win32 CreateWindow. En este estilo se especifica entre otras cosas qué tipo de botones de control va a mostrar la ventana. Por otro lado existe una función de la API Win32 llamada SetWindowLong que permite cambiar muchas propiedades ya existentes, entre estas su estilo. Por lo tanto si pudiésemos conocer de antemano el estilo de la ventana que queremos cambiar, bastaría anular determinadas características de este estilo (con operaciones booleanas) para poder eliminar la característica que necesitáramos. Para averiguar el estilo de una ventana se usa la función API GetWindowLong, que permite averiguar otras muchas cosas. Según esto y sabiendo que los estilos que definen el que una ventana tenga botones de maximizar, minimizar, etc.. son WS_MAXIMIZEBOX, WS_MINIMIZEBOX, etc... bastará escribir una línea de código como la siguiente para anular esos valores: SetWindowLong Me. HWnd, GWL_STYLE, (GetWindowLong(Me. HWnd, GWL_STYLE) And Not WS_MINIMIZEBOX) De este modo eliminaríamos el botón de minimizar (concretamente aparecería inhabilitado). Lo mismo ocurriría para el caso del botón de maximizar. Sin embargo, si lo que quiere realmente es eliminar todo rastro de los botones e iconos que aparecen en la barra de su formulario MDI la manera más sencilla de hacerlo es eliminando directamente el menú de sistema que todas las ventanas suelen tener (el que sale al pulsar sobre el icono de la izquierda). Para ello escriba el siguiente código al cargar el formulario: Private Sub MDIForm_Load() SetWindowLong Me. HWnd, GWL_STYLE, (GetWindowLong(Me. HWnd, GWL_STYLE) And Not WS_SYSMENU) End Sub De todas maneras así desaparecerán los menús pero el usuario seguirá pudiendo maximizar y restaurar la ventana haciendo doble-clic sobre su barra de títulos. Para evitar este efecto se debe anular también el botón de maximizar aunque no se vea: Private Sub MDIForm_Load() SetWindowLong Me. HWnd, GWL_STYLE, ((GetWindowLong(Me. HWnd, GWL_STYLE) And Not WS_SYSMENU)And Not WS_MAXIMIZEBOX) End Sub De esta forma la ventana adquiere el aspecto y comportamiento que usted estaba buscando. La imagen en el Form... puede ser: ************* Una solución rápida y buena, es que el archvivo que quieres poner en el mdi lo insertes en powerpoint, de powerpoint lo copias te vas al mdi (lo seleccionas) y lo pegas (ctrl+v), y te la pega con un formato de wmf, por lo tanto al cambiar de tamaño el mdi automáticamente se escala la imagen. Este es un truco muy simple...