Programación General > C++ Builder
capturar resolucion
(1/1)
lair:
Hola a todos.
en esta ocacion tengo el siguiente problema, necesito que mi aplicacion al ejecutarse cambie la resolucion de la pantalla para que se ajuste a las dimenciones en la que la realice, esto lo consigo con el siguiente codigo:
--- Código: C++ ---void __fastcall TForm1::FormActivate(TObject *Sender){ int indice=0; DEVMODE displaymode; displaymode.dmSize=sizeof(DEVMODE); while(EnumDisplaySettings(NULL, indice, &displaymode)){ if(displaymode.dmPelsWidth==1024 && displaymode.dmPelsHeight==768){ displaymode.dmFields=DM_PELSWIDTH | DM_PELSHEIGHT; LONG result=ChangeDisplaySettings(&displaymode, CDS_TEST); if(result==DISP_CHANGE_SUCCESSFUL){ ChangeDisplaySettings(&displaymode,0); break; } } indice++; }}
y lo que quiero es que al cerra la aplicacion regrese la resolicion a la que tenia originalmente, el problema es que no se como hacer para tomar presisamente ese dato, eh intentado capturarlo de la siguiente manera:
--- Código: C++ ---void __fastcall TForm1::FormActivate(TObject *Sender){ int indice=0; DEVMODE displaymode; displaymode.dmSize=sizeof(DEVMODE);/*declaro dos variables globales que en teoria almacenan la resolucion actualque tiene la pantalla*/ X=displaymode.dmPelsWidth; Y=displaymode.dmPelsHeight; while(EnumDisplaySettings(NULL, indice, &displaymode)){ if(displaymode.dmPelsWidth==1024 && displaymode.dmPelsHeight==768){ displaymode.dmFields=DM_PELSWIDTH | DM_PELSHEIGHT; LONG result=ChangeDisplaySettings(&displaymode, CDS_TEST); if(result==DISP_CHANGE_SUCCESSFUL){ ChangeDisplaySettings(&displaymode,0); break; } } indice++; }}
y en el evento de close tengo el siguiente codigo en el que intento regresar la resolucion que previamente capture:
--- Código: C++ ---int indice=0; DEVMODE displaymode; displaymode.dmSize=sizeof(DEVMODE); while(EnumDisplaySettings(NULL, indice, &displaymode)){ if(displaymode.dmPelsWidth==X && displaymode.dmPelsHeight==Y){ displaymode.dmFields=DM_PELSWIDTH | DM_PELSHEIGHT; LONG result=ChangeDisplaySettings(&displaymode, CDS_TEST); if(result==DISP_CHANGE_SUCCESSFUL){ ChangeDisplaySettings(&displaymode,0); break; } } indice++; } el problema es que en las variables X y Y yo esperaba que se almacenara algo como 1024 y 768,pero se almacena un numero muy grando algo como 172859635, alguien sabe como capturar la resolucion actual o que es lo que realmente me representa ese numero que me retorna??
de antemano muchas gracias por su tiempo y ayuda.
lair:
Solucionado :good:
con esta linea retorna la resolucion en X (El ancho) que tiene actualmente el monitor
--- Código: C++ ---GetSystemMetrics(SM_CXSCREEN);
espero y algun dia le sea util a alguien mas. :beer:
Navegación
Ir a la versión completa