Barra de tareas / TaskBar, (Solucionado / Fixed)

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

Post Reply
User avatar
tave2009
Posts: 61
Joined: Tue Jul 14, 2009 3:33 am
Location: San Francisco, Córdoba, Argentina.

Barra de tareas / TaskBar, (Solucionado / Fixed)

Post by tave2009 »

Español:
Hay alguna función en C++ para averiguar
el alto de la Barra de Tareas.
Gracias.

English:
Is there any function in C + + to learn
height of the Taskbar.
Thanks.
Last edited by tave2009 on Mon Mar 01, 2010 3:29 pm, edited 1 time in total.
Nada se pierde. Todo se transforma. (Lavoussier)
Nothing is lost. Everything changes.
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: Barra de tareas ...

Post by srvet_claudio »

Hola Tave2009.
No se si existe una función especifica en c++ para determinar la altura de la barra de tareas de windows, pero existen dos funciones que si talvez la combinas, por diferencia podrías averiguar la altura de la barra de tareas.

#define SM_CXSCREEN 0
#define SM_CYSCREEN 1
GetSystemMetrics(SM_CYSCREEN) devuelve la altura en pixels de toda la pantalla, seria algo similar
al System.DesktopHeight de MiniGUI.

#define SPI_GETWORKAREA 48
SystemParametersInfo(SPI_GETWORKAREA,0, pvParam,0)
Según Microsoft (http://msdn.microsoft.com/es-ar/library ... S.85).aspx) esta función recupera el tamaño de la zona de trabajo en el monitor de la pantalla primaria.
El área de trabajo es la porción de la pantalla que no queda oculta por la barra de tareas del sistema o por
barras de herramientas de aplicación de escritorio.
El parámetro pvParam debe apuntar a una estructura RECT que recibe las coordenadas
de la zona de trabajo, expresada en coordenadas virtuales de la pantalla.
Si la función falla, el valor de retorno es cero, de lo contrario retorna un valor <> de 0

typedef struct _RECT {
LONG left;
LONG top;
LONG right;
LONG bottom; } RECT;

No se si te pude ayudar en algo, te adjunto la dirección de un tutorial del API de Windows que encontré en internet que me parece interesante (http://winapi.conclase.net/?id=descargas), bajar el archivo winapi5.zip.
Saludos,
Claudio
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
User avatar
tave2009
Posts: 61
Joined: Tue Jul 14, 2009 3:33 am
Location: San Francisco, Córdoba, Argentina.

Re: Barra de tareas / TaskBar, (Solucionado / Fixed)

Post by tave2009 »

Español:
Hola,
En el archivo que se adjunta está la solución.
Este archivo esta en la página de Marcos Gambeta (Basil).
En el mismo 'prg' está la URL.
En esta página hay muchas rutinas de apoyo para el Programado MGH.
Gracias srvet_claudio por tu aporte.
Saludos.
Walter.

English (Google):
Hi,
In the attached file is the solution.
This file is on page Marcos Gambeta (Basil).
In the same 'prg' is the URL.
On this page there are many routines for the programmer to support MGH.
Srvet_claudio Thanks for your input.
Greetings.
Walter.
Attachments
TASKBAR.ZIP
(1.11 KiB) Downloaded 254 times
Nada se pierde. Todo se transforma. (Lavoussier)
Nothing is lost. Everything changes.
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: Barra de tareas / TaskBar, (Solucionado / Fixed)

Post by srvet_claudio »

Agrego una rutina en puro código MiniGUI para estimar la altura barra tarea de windows,
no es de las mas elegantes ni eficientes pero cumple su cometido....
Saludos a todos


#include <hmg.ch>

* Autor: Claudio Soto, Uruguay, 1 Marzo 2010

FUNCTION MAIN

DEFINE WINDOW ventana1 AT 0,0 ;
WIDTH 600;
HEIGHT 400;
TITLE "Estima la altura barra de tarea de Windows";
MAIN

DEFINE BUTTON Boton_1
ROW 60
COL 250
WIDTH 100
HEIGHT 28
CAPTION "Estimar"
ACTION altura_barra()
FONTNAME "Arial"
FONTSIZE 9
END BUTTON

END WINDOW

CENTER WINDOW ventana1
ACTIVATE WINDOW ventana1
RETURN


*********************************************************************************
PROCEDURE altura_barra
static flag := .T.

IF flag
DEFINE WINDOW vent_aux;
AT 0,0;
WIDTH 200;
HEIGHT 200;
TITLE "Ventana auxiliar";
CHILD

vent_aux.maximize
vent_aux.hide
END WINDOW
flag := .F.
ENDIF

altura_barra := System.DesktopHeight - vent_aux.Height

IF altura_barra > 0
msginfo ("Altura de la barra en pixels: " + str(altura_barra))
ELSE
msginfo ("Probablemente la barra este oculta"+chr(13)+"Altura de la barra en pixels: " + str(altura_barra))
ENDIF
RETURN
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
Post Reply