Especificaciones de la pantalla

Varias propiedades proporcionadas por la función TerminalInfoInteger se refieren al subsistema de vídeo del ordenador.

Identificador

Descripción

TERMINAL_SCREEN_DPI

La resolución de la información transmitida a la pantalla se mide en número de puntos por pulgada lineal (DPI, Dots Per Inch).

TERMINAL_SCREEN_LEFT

Coordenada izquierda de la pantalla virtual

TERMINAL_SCREEN_TOP

Coordenada superior de la pantalla virtual

TERMINAL_SCREEN_WIDTH

Anchura de la pantalla virtual

TERMINAL_SCREEN_HEIGHT

Altura de la pantalla virtual

TERMINAL_LEFT

Coordenada izquierda del terminal respecto a la pantalla virtual

TERMINAL_TOP

Coordenada superior del terminal respecto a la pantalla virtual

TERMINAL_RIGHT

Coordenada derecha del terminal respecto a la pantalla virtual

TERMINAL_BOTTOM

Coordenada inferior del terminal respecto a la pantalla virtual

Conociendo el parámetro TERMINAL_SCREEN_DPI puede establecer las dimensiones de objetos gráficos para que se vean de la misma manera en monitores con resoluciones diferentes. Por ejemplo, si desea crear un botón con un tamaño visible de X centímetros, puede especificarlo como el número de puntos en la pantalla (píxeles) utilizando la siguiente función:

int cm2pixels(const double x)
{
   static const double inch2cm = 2.54// 1 inch equals 2.54 cm
   return (int)(x / inch2cm * TerminalInfoInteger(TERMINAL_SCREEN_DPI));
}

La pantalla virtual es un cuadro delimitador (bounding box) de todos los monitores. Si hay más de un monitor en el sistema y el orden de su disposición difiere estrictamente de izquierda a derecha, entonces la coordenada izquierda de la pantalla virtual puede resultar negativa, y el centro (punto de referencia) estará en el borde de dos monitores (en la esquina superior izquierda del monitor principal).

Pantalla virtual desde varios monitores

Pantalla virtual desde varios monitores

Si el sistema tiene un monitor, el tamaño de la pantalla virtual se corresponde totalmente con él.

Las coordenadas del terminal no tienen en cuenta su posible maximización actual (es decir, si la ventana principal está maximizada, las propiedades devuelven el tamaño no maximizado, aunque el terminal esté expandido a todo el monitor).

En el script EnvScreen.mq5, compruebe las propiedades de la pantalla de lectura.

void OnStart()
{
   PRTF(TerminalInfoInteger(TERMINAL_SCREEN_DPI));
   PRTF(TerminalInfoInteger(TERMINAL_SCREEN_LEFT));
   PRTF(TerminalInfoInteger(TERMINAL_SCREEN_TOP));
   PRTF(TerminalInfoInteger(TERMINAL_SCREEN_WIDTH));
   PRTF(TerminalInfoInteger(TERMINAL_SCREEN_HEIGHT));
   PRTF(TerminalInfoInteger(TERMINAL_LEFT));
   PRTF(TerminalInfoInteger(TERMINAL_TOP));
   PRTF(TerminalInfoInteger(TERMINAL_RIGHT));
   PRTF(TerminalInfoInteger(TERMINAL_BOTTOM));
}

He aquí un ejemplo de las entradas de registro resultantes.

TerminalInfoInteger(TERMINAL_SCREEN_DPI)=96 / ok
TerminalInfoInteger(TERMINAL_SCREEN_LEFT)=0 / ok
TerminalInfoInteger(TERMINAL_SCREEN_TOP)=0 / ok
TerminalInfoInteger(TERMINAL_SCREEN_WIDTH)=1440 / ok
TerminalInfoInteger(TERMINAL_SCREEN_HEIGHT)=900 / ok
TerminalInfoInteger(TERMINAL_LEFT)=126 / ok
TerminalInfoInteger(TERMINAL_TOP)=41 / ok
TerminalInfoInteger(TERMINAL_RIGHT)=1334 / ok
TerminalInfoInteger(TERMINAL_BOTTOM)=836 / ok

Además de los tamaños generales de la pantalla y de la ventana del terminal, los programas MQL necesitan con bastante frecuencia analizar el tamaño actual del gráfico (ventana hija dentro del terminal). Para ello existe un conjunto especial de funciones (en particular, ChartGetInteger), de las que hablaremos en la sección Gráficos.