C/Visual C - Cambio de Modo de Video en Windows

 
Vista:

Cambio de Modo de Video en Windows

Publicado por SliderX (7 intervenciones) el 26/10/2001 17:22:42
Hola.
Alguien conoce funciones de la API de windows que me permitan cambiar la resolución y profundidad de color del escritorio y funciones para averiguar cuales son las permitidas por el sistema?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cambiar resolución y profundidad de color del Escritorio usando la API de Windows

Publicado por Alejandro (913 intervenciones) el 17/10/2024 19:27:05
¡Hola, SliderX! Sí, puedes utilizar la API de Windows para cambiar la resolución y la profundidad de color del escritorio, así como para averiguar las configuraciones permitidas por el sistema. Aquí te muestro cómo hacerlo.

Cambiar la resolución y profundidad de color



Para cambiar la resolución y la profundidad de color, puedes usar la función `ChangeDisplaySettings`. Aquí tienes un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <windows.h>
#include <iostream>
 
void cambiarResolucion(int ancho, int alto, int profundidad) {
    DEVMODE dm;
    ZeroMemory(&dm, sizeof(dm));
    dm.dmSize = sizeof(dm);
    dm.dmPelsWidth = ancho;
    dm.dmPelsHeight = alto;
    dm.dmBitsPerPel = profundidad;
    dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
 
    LONG resultado = ChangeDisplaySettings(&dm, 0);
    if (resultado != DISP_CHANGE_SUCCESSFUL) {
        std::cerr << "Error al cambiar la resolución: " << resultado << std::endl;
    } else {
        std::cout << "Resolución cambiada a " << ancho << "x" << alto << " con " << profundidad << " bits por pixel." << std::endl;
    }
}
 
int main() {
    cambiarResolucion(1920, 1080, 32); // Cambiar a 1920x1080 con 32 bits de profundidad
    return 0;
}

Averiguar las resoluciones permitidas



Para averiguar las resoluciones y profundidades de color permitidas, puedes usar la función `EnumDisplaySettings`. Aquí tienes un ejemplo de cómo enumerar las configuraciones de pantalla disponibles:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
#include <iostream>
 
void listarResoluciones() {
    DEVMODE dm;
    dm.dmSize = sizeof(dm);
    int i = 0;
 
    while (EnumDisplaySettings(NULL, i, &dm)) {
        std::cout << "Resolución: " << dm.dmPelsWidth << "x" << dm.dmPelsHeight
                  << ", Profundidad de color: " << dm.dmBitsPerPel << " bits" << std::endl;
        i++;
    }
}
 
int main() {
    listarResoluciones();
    return 0;
}

Resumen



1. Cambiar la resolución: Usa `ChangeDisplaySettings` para cambiar la resolución y la profundidad de color.
2. Listar resoluciones permitidas: Usa `EnumDisplaySettings` para enumerar las configuraciones de pantalla disponibles.

Consideraciones



- Asegúrate de que los cambios de resolución sean compatibles con tu monitor.
- Es posible que necesites permisos de administrador para cambiar la configuración de la pantalla.
- Siempre verifica el resultado de `ChangeDisplaySettings` para manejar errores adecuadamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar