Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

hallar la altura de la barra de tareas en pixel

393 views
Skip to first unread message

Miguel F

unread,
Mar 29, 2010, 3:35:17 PM3/29/10
to
¿como puedo hallar la altura? mi problema es que si maximizo el form con el
bordestyle a cero, el form ocupa toda la pantalla tampando la barra de
tareas y ademas, tengo otro problema, y es que no me sale el form en la
barra de tareas.

saludos


Leonardo Azpurua arroba punto

unread,
Mar 29, 2010, 8:13:06 PM3/29/10
to

"Miguel F" <mig...@espectaculosfominaya.com> escribió en el mensaje
news:ecbK3b3...@TK2MSFTNGP05.phx.gbl...


Hola,

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,
lpRect As RECT) As Long

Private Sub Form_Load()
Dim wrect As RECT, tWind as Long
tWnd = FindWindow("Shell_traywnd", vbNullString)
GetWindowRect tWnd, wrect
Debug.Print wrect.Top, wrect.Left, wrect.Bottom, wrect.Right
End Sub

(tomado de la API Guide).

La barra de tareas es de la clase "Shell_traywnd". En el ejemplo sé de
antemano que la barra de tareas existe, pero en un programa de uso general
habría que contemplar la posibilidad de que el shell, que es el responsable
de presentar la IU no la utilice. Si no está definida, el valor de retorno
sería cero.

Luego uso el valor obtenido devuelto por FindWindow para pasarselo a
GetWindowRect, que me devuelve las coordenadas de los puntos superior
izquierdo e inferior derecho de la barra.

En mi monitor (1440 x 900 px), los valores devueltos varían según el caso:

Barra de tareas "normal" (abajo, alto simple), oculta, siempre visible =
TRUE:
898, -2, 928, 1442
Barra de tareas "normal", abierta:
872, -2, 902, 1442
Barra de tareas de doble altura, borde inferior, visible:
847, -2, 902, 1442
Barra de tareas de doble ancho, borde izquierdo de la panatalla:
-2, -2, 902, 96

Estas coordenadas están expresadas en pixeles. Normalmente VB usa Twips.
Para convertir de px a Twips multiplica por TwipsPerPixelX o TwipsPerPixelY
según sea el caso.

Las ventanas sin borde ni caption no se muestran en la barra de tareas.


Salud!

0 new messages