Cambiar resolucion de pantalla

13/05/2004 - 00:24 por Douglas Cruz | Informe spam
Tengo un programa donde necesito cambiar la resolucion de pantalla,
actualmente la obtengo a traves de la funcion GetSystemMetrics(), pero como
hago para cambiarla? quiero tener las 2 opciones de 800x600 y 1024x768

saludos
 

Leer las respuestas

#1 Cholo Lennon
13/05/2004 - 19:49 | Informe spam
Debes usar la función API ChangeDisplaySettings. El siguiente ejemplo cambia
la resolución a 640 x 480 x 8 bits de colores:

#include <windows.h>
#include <string>

using namespace std;

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
DEVMODE DevMode;
ZeroMemory(&DevMode, sizeof(DEVMODE));
DevMode.dmSize = sizeof(DEVMODE);

DevMode.dmPelsWidth = 800;
DevMode.dmFields |= DM_PELSWIDTH;

DevMode.dmPelsHeight = 600;
DevMode.dmFields |= DM_PELSHEIGHT;

DevMode.dmBitsPerPel = 16;
DevMode.dmFields |= DM_BITSPERPEL;

string strMsg;
switch (ChangeDisplaySettings(&DevMode, CDS_UPDATEREGISTRY))
{
case DISP_CHANGE_SUCCESSFUL:
strMsg = "Todo correcto";
break;

case DISP_CHANGE_RESTART:
strMsg = "Deberá reiniciar la PC antes que los cambios tenga
efecto";
break;

case DISP_CHANGE_BADFLAGS:
strMsg = "Parametros inválidos (flags)";
break;

case DISP_CHANGE_FAILED:
strMsg = "El driver no puede cambiar la resolución";
break;

case DISP_CHANGE_BADMODE:
strMsg = "Parámetros inválidos o el modo no se puede
cambiar";
break;

case DISP_CHANGE_NOTUPDATED: //Windows NT
strMsg = "Imposible escribir en el registro";
break;

default:
strMsg = "Valor de retorno no documentado";
}

MessageBox(NULL, strMsg.c_str(), "Resultado", MB_ICONINFORMATION);

return 0;
}


Saludos
Cholo Lennon
Salta, ARG

Preguntas similares