visual toda tamaño resolucion que pantalla ocupe maximizar hacer formularios formulario form escala controles completa automático ajuste ajustar vb6

vb6 - toda - Tamaño del formulario para completar las dimensiones de la pantalla menos la barra de tareas



maximizar formulario c# (3)

¿Hay alguna razón por la que no puedas simplemente maximizar el formulario? Esa sería mi primera impresión.

Si no es un corredor, puede intentar obtener la altura de la barra de tareas de la siguiente manera:

Private Const ABM_GETTASKBARPOS = &H5 Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type APPBARDATA cbSize As Long hwnd As Long uCallbackMessage As Long uEdge As Long rc As RECT lParam As Long End Type Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long Function GetTaskBarSize() Dim ABD As APPBARDATA SHAppBarMessage ABM_GETTASKBARPOS, ABD MsgBox "Width:" & ABD.rc.Right - ABD.rc.Left MsgBox " Height:" & ABD.rc.Bottom - ABD.rc.Top End Sub

y luego establecer la altura de su formulario a la altura de la pantalla menos la altura de la barra de tareas.

¿Cómo se dimensiona el formulario en vb6 para que el borde inferior del formulario esté en la parte superior de la barra de tareas?


¿Menos solo la barra de tareas? Eso tal vez no sea realmente lo que quieres. Puede haber otras ventanas en los bordes de la pantalla que están destinadas a "tallar" regiones del escritorio. Además, tenga en cuenta que a veces la altura de la barra de tareas es irrelevante, como cuando está acoplada en el lado izquierdo o derecho de la pantalla.

Galwegian ha mostrado cómo obtener el alto de la barra de tareas, pero si realmente está buscando el área utilizable del escritorio, utilice la función SystemParametersInfo con el indicador spi_GetWorkArea . Le indicará el área del escritorio excluyendo todas las barras de herramientas del escritorio. MSDN informa que si está interesado en el espacio disponible en algo que no sea el monitor principal, debe llamar a GetMonitorInfo en GetMonitorInfo lugar; llena un registro, y uno de los campos es para el área de trabajo del monitor.

Voy a secundar la idea de que realmente podrías querer maximizar tu ventana. Si ya lo hizo y desea saber cuánto espacio ocupa, obtenga el tamaño actual de su ventana y luego restar las dimensiones del marco de la ventana (que se "esconde debajo de los bordes" de el escritorio cuando se maximiza una ventana). Puede usar GetSystemMetrics con los sm_CXFrame y sm_CYFrame para eso.


Voy a aceptar que probablemente quieras maximizar tu ventana.

Pero si realmente desea conocer el área del escritorio excluyendo todas las barras de herramientas del escritorio (barra de tareas, barra de herramientas de Microsoft Office, etc.), aquí hay algunas declaraciones VB6 para la llamada SystemParametersInfo y una función de muestra que centra formularios en la pantalla, permitiendo las barras de herramientas . Esto se toma prestado de 101 consejos tecnológicos (PDF) del antiguo Visual Basic Programmers Journal.

Private Const SPI_GETWORKAREA = 48 Private Declare Function SystemParametersInfo& Lib "User32" Alias "SystemParametersInfoA" ( _ ByVal uAction As Long, _ ByVal uParam As Long, lpvParam As Any, _ ByVal fuWinIni As Long) Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Function CenterForm32 (frm As Form) Dim ScreenWidth&, ScreenHeight&, ScreenLeft&, ScreenTop& Dim DesktopArea As RECT Call SystemParametersInfo (SPI_GETWORKAREA, 0, DesktopArea, 0) ScreenHeight = (DesktopArea.Bottom - DesktopArea.Top) * Screen.TwipsPerPixelY ScreenWidth = (DesktopArea.Right - DesktopArea.Left) * Screen.TwipsPerPixelX ScreenLeft = DesktopArea.Left * Screen.TwipsPerPixelX ScreenTop = DesktopArea.Top * Screen.TwipsPerPixelY frm.Move (ScreenWidth - frm.Width) / 2 + ScreenLeft, _ (ScreenHeight - frm.Height) / 2 + ScreenTop End Function