Pues eso, necesito conocer el tamaño del escritorio y también su profundidad.
¿alguien sabe cómo?
Hola Dracula,
Usando la estructura DEVMODE lo puedes saber. Es como cuando quieres hacer pantalla completa y utilizas el DEVMODE para cambiarlo, pues tambien se puede utilizar para saber que tamaño y profundidad tenia el escritorio antes de cambiarlo para luego poder restaurarlo... es eso lo que quieres?
Saludos
Prueba con:
GetSystemMetrics(SM_CXSCREEN);
GetSystemMetrics(SM_CYSCREEN);
o
GetDeviceCaps(hdcPrimaryMonitor, HORZRES);
GetDeviceCaps(hdcPrimaryMonitor, VERTRES);
GetDeviceCaps(hdcPrimaryMonitor, BITSPIXEL);
También puedes usar un método de Direct3D llamado GetAdapterDisplayMode() al cual le pasas el adaptador (D3DADAPTER_DEFAULT si no te quieres complicar un poco la vida) y una estructura del tipo D3DDISPLAYMODE. El resultado de llamar a esta función será el ancho, alto, refresco y profundidad (formato) del escritorio, te aconsejo que mires la ayuda de DirectX para más información.
Un saludo.
Hola Dracula!
Yo lo hago con la estructura DEVMODE. Luego llamas a la funcion EnumDisplaySettings y ya esta. Este es un ejemplo:
devMode.dmSize = sizeof( DEVMODE );
::EnumDisplaySettings( NULL, ENUM_CURRENT_SETTINGS, &devMode );
width = devMode.dmPelsWidth;
height = devMode.dmPelsHeight;
bpp = devMode.dmBitsPerPel;
Gracias a todos. La forma más sencilla me parece que es la de Emotion, puesto que ya tengo esa información por defecto, pero siempre es bueno conocer otras.