#3 Re: [C#] Resolución de Pantalla
Hola a todos.
Voy a romper una regla personal: "no opines si no sabes".
Mi conocimiento en C# es de -1, pero, se me ocurrió una pregunta y no la podía dejar pasar.
¿Se puede hacer llamadas a las funciones API's de Windows, como ChangeDisplaySettings, desde éste lenguaje?
Para no esperar la respuesta, voy a romper la regla.
Aqui he colocado el código fuente de un proyecto personal "de vieja data",
está escrito en Visual C++ v.6.0:
Código:
/*
* 'ChangeDisplay'
* [IN] Width - Ancho en pixeles.
* [IN] Height - Alto en pixeles.
* [IN] Bpp - Resolusción en bits.Yo utilizo 16.
* [IN] bRestore - si false cambiar modo.
* - si true restaurar modo.
*/
bool ChangeDisplay(int Width, int Height,int Bpp, bool bRestore = false)
{
if(FALSE == bRestore)
{
DEVMODE pDev;
LONG lRet;
memset(&pDev,0,sizeof(pDev));
pDev.dmSize = sizeof(pDev);
pDev.dmPelsWidth = Width;
pDev.dmPelsHeight = Height;
pDev.dmBitsPerPel = Bpp;
pDev.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
lRet = ChangeDisplaySettings(&pDev,CDS_SETRECT | CDS_FULLSCREEN | CDS_SET_PRIMARY);
if(lRet != DISP_CHANGE_SUCCESSFUL)
{
TCHAR szMsj[] = "No se pudo cambiar el modo de pantalla a %dx%dx%d \n Error: %s";
switch(lRet)
{
case DISP_CHANGE_FAILED:
MsgOut(NULL,MB_OK | MB_ICONHAND,"Error",szMsj,Width,Height,Bpp,"Failed");
break;
case DISP_CHANGE_BADMODE:
MsgOut(NULL,MB_OK | MB_ICONHAND,"Error",szMsj,Width,Height,Bpp,"Bad Mode");
break;
case DISP_CHANGE_BADFLAGS:
MsgOut(NULL,MB_OK | MB_ICONHAND,"Error",szMsj,Width,Height,Bpp,"Bad Flags");
break;
case DISP_CHANGE_BADPARAM:
MsgOut(NULL,MB_OK | MB_ICONHAND,"Error",szMsj,Width,Height,Bpp,"Bad Param");
break;
}
return (false);
}
ShowCursor(TRUE);
}else{
ChangeDisplaySettings(NULL,0);
ShowCursor(TRUE);
}
return (true);
}
Saludos.