-----Original Message-----
From: Oscar Manuel Gomez Senovilla <oscarsen@eims.es>
Date: Saturday, April 04, 1998 5:36 PM
>> ¿Cómo puedo saber el tamaño y la posición de la barra de tareas de w95 en
>> un momento determinado?
>
No puedes de manera directa. Lo que sí puedes es determinar las coordenadas del
área de trabajo, llamando a SystemParametersInfo. Te paso un ejemplo. Pega este
código en un módulo .BAS. Si quieres ajustar el tamaño de la ventana de manera
que llene el área disponible del escritorio, sólo necesitas la instrucción:
FillSystemWorkArea
Si revisas ese procedimiento, allí se ve cómo se solicita el tamaño del área
cliente, so, puedes ajustarlo para lo q necesites.
Option Explicit
' OJO: todas las declaraciones son privadas para evitar
' posibles problemas con las mismas declaraciones hechas
' en otros módulos
' coordenadas de un rectángulo
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
' actions de SystemParametersInfo
Private Const SPI_GETWORKAREA = 48
' SystemParametersInfo: wrapper para solicitar workarea
Private Declare Function WorkAreaSPI Lib "user32" _
Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, _
ByRef lpvParam As RECT, ByVal fuWinIni As Long) As Long
' esta rutina cambia el tamaño y posición de una forma
' de manera que llene el área del escritorio de Win95
Public Sub FillSystemWorkArea(Forma As Form)
Dim lResult As Long
Dim lLastError As Long
Dim APICallRect As RECT
' traer work area del sistema
lResult = WorkAreaSPI(SPI_GETWORKAREA, 0&, APICallRect, 0&)
' detectar lasterror del DLL
lLastError = Err.LastDllError
' validar si algo falló
If lResult = 0 Then
' si el resultado es 0, algo salió mal.
MsgBox "Error al leer WorkArea de Sistema. Código: " & lLastError
Else
' ojo: hay que ajustar pixels a twips
With APICallRect
.Top = .Top * Screen.TwipsPerPixelY
.Bottom = .Bottom * Screen.TwipsPerPixelY
.Left = .Left * Screen.TwipsPerPixelX
.Right = .Right * Screen.TwipsPerPixelX
End With
' ajustar posición de la forma
With APICallRect
Forma.Top = .Top
Forma.Left = .Left
Forma.Height = .Bottom - .Top
Forma.Width = .Right - .Left
End With
End If
End Sub
Resumen