Función MagSetFullscreenTransform (magnification.h)

Cambia la configuración de ampliación de la lupa de pantalla completa.

Sintaxis

BOOL MagSetFullscreenTransform(
  [in] float magLevel,
  [in] int   xOffset,
  [in] int   yOffset
);

Parámetros

[in] magLevel

Tipo: float

El nuevo factor de ampliación para la lupa de pantalla completa. El valor mínimo de este parámetro es 1,0 y el valor máximo es 4096,0. Si este valor es 1.0, el contenido de la pantalla no se amplía y no se aplican desplazamientos.

[in] xOffset

Tipo: int

Nuevo desplazamiento de coordenadas x, en píxeles, para la esquina superior izquierda de la vista ampliada. El desplazamiento es relativo a la esquina superior izquierda del monitor principal, en coordenadas no actualizadas. El valor mínimo del parámetro es -262144 y el valor máximo es 262144.

[in] yOffset

Tipo: int

Nuevo desplazamiento de coordenadas y, en píxeles, para la esquina superior izquierda de la vista ampliada. El desplazamiento es relativo a la esquina superior izquierda del monitor principal, en coordenadas no actualizadas. El valor mínimo del parámetro es -262144 y el valor máximo es 262144.

Valor devuelto

Tipo: BOOL

Devuelve TRUE si se ejecuta correctamente. De lo contrario, FALSE.

Comentarios

Los desplazamientos no se ven afectados por la configuración de puntos actuales por pulgada (ppp).

El factor de ampliación se aplica a los objetos visuales actuales del cursor del mouse, incluidos los objetos visuales de cursor afectados por la configuración relacionada con el mouse en el panel de control de accesibilidad.

En un entorno de varios monitores, para colocar la esquina superior izquierda de la vista ampliada a la izquierda del monitor principal, los desplazamientos se deben ajustar mediante la esquina superior izquierda de la pantalla virtual y el factor de ampliación que se está aplicando. (La pantalla virtual es el rectángulo delimitador de todos los monitores de visualización). Para ver un ejemplo que muestra cómo colocar la esquina superior izquierda de la vista ampliada a la izquierda del monitor principal, vea Ejemplos.

A partir de Windows 10 Creators Update (versión 1703), debe usar la función MagSetInputTransform para que la entrada se enrute al elemento ampliado.

Ejemplos

En el ejemplo siguiente se establece el factor de ampliación de la lupa de pantalla completa y se coloca el centro del contenido de pantalla ampliado en el centro de la pantalla.

BOOL SetZoom(float magnificationFactor)
{
    // A magnification factor less than 1.0 is not valid.
    if (magnificationFactor < 1.0)
    {
        return FALSE;
    }

    // Calculate offsets such that the center of the magnified screen content 
    // is at the center of the screen. The offsets are relative to the 
    // unmagnified screen content.
    int xDlg = (int)((float)GetSystemMetrics(
            SM_CXSCREEN) * (1.0 - (1.0 / magnificationFactor)) / 2.0);
    int yDlg = (int)((float)GetSystemMetrics(
            SM_CYSCREEN) * (1.0 - (1.0 / magnificationFactor)) / 2.0);

    return MagSetFullscreenTransform(magnificationFactor, xDlg, yDlg);
}

En el ejemplo siguiente se amplía la pantalla para que la esquina superior izquierda de una ventana determinada aparezca en la esquina superior izquierda de la vista ampliada. Si el fPositionRelativeToVirtualScreen parámetro es FALSE, la ventana se coloca en la esquina superior izquierda del monitor principal. Si fPositionRelativeToVirtualScreen es TRUE y el sistema tiene varios monitores, el ejemplo ajusta los desplazamientos para colocar la ventana en relación con la pantalla virtual; es decir, la ventana se coloca en la esquina superior izquierda del monitor más a la izquierda.

// Note: This example does not check whether the offset is large enough to 
// ensure that the magnified content fills the entire screen. Depending on the 
// location of the target window, some unmagnified content might be visible to 
// the right of the magnified content.

// Description:
//   Magnifies the screen such that the upper-left corner of a particular window 
//   appears at the upper-left corner of the magnified view.
//
// Parameters:
//   fPositionRelativeToVirtualDesktop - TRUE to set the magnified view relative
//   to the upper-left corner of the virtual screen, or FALSE to set the 
//   magnified view relative to the upper-left corner of the primary monitor.
//
BOOL SetFullscreenMagnification(BOOL fPositionRelativeToVirtualScreen)
{
    BOOL fResult = FALSE;

    // Get the window whose upper-left corner is to appear at the upper-left 
    // corner of the magnified view.
    HWND hWndTarget = FindWindow(L"TargetAppClass", NULL);
    if (hWndTarget != NULL)
    {
        RECT rcTarget;
        GetWindowRect(hWndTarget, &rcTarget);

        // Set the magnification to be 200%.
        float magVal = 2.0;

        // Position the point of interest to appear at the upper-left corner 
        // of the primary monitor.
        int xOffset = rcTarget.left;
        int yOffset = rcTarget.top;

        if (fPositionRelativeToVirtualScreen)
        {
            // Adjust the point of interest to appear at the upper-left corner of 
            // the virtual screen; that is, the left-most monitor.

            RECT rcVirtualScreen;
    
            rcVirtualScreen.left = GetSystemMetrics(SM_XVIRTUALSCREEN);
            rcVirtualScreen.top  = GetSystemMetrics(SM_YVIRTUALSCREEN);

            xOffset -= (int)(rcVirtualScreen.left / magVal);
            yOffset -= (int)(rcVirtualScreen.top  / magVal);
        }

        fResult = MagSetFullscreenTransform(magVal, xOffset, yOffset);
    }

    return fResult;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado magnification.h
Library Magnification.lib
Archivo DLL Magnification.dll

Consulte también

MagGetFullscreenTransform