Einfach mal so aus dem Bauch heraus:
#include <windows.h>
#include <crtdbg.h>
#include <ddraw.h>
IDirectDraw* lpDD;
IDirectDraw2* lpDD2;
DDSURFACEDESC surface;
main()
{
//DirectDraw Objekt erstellen
if (DirectDrawCreate(NULL,&lpDD,NULL) != DD_OK)
{
Fehler("Direct Draw Objekt konnte nicht erstellt werden!");
return -1;
}
//Neures Interface laden
if (lpDD->QueryInterface(IID_IDirectDraw2,(void**)&lpDD2) != DD_OK)
{
Fehler("Direct Draw 2 Objekt konnte nicht geladen werden!");
lpDD->Release();
}
//Altes Interface wieder freigeben
lpDD->Release();
//SURFACEDESC Struktur vorbereiten
memset(&surface,0,sizeof(DDSURFACEDESC));
surface.dwSize = sizeof(DDSURFACEDESC);
surface.dwFlags = DDSD_HEIGHT | DDSD_WIDTH;
//Auflösung in der Struktur speichern
hResult = lpDD2->GetDisplayMode(&surface);
if (hResult != DD_OK)
{
Fehler("Auflösung konnte nicht ermittlet werden!");
return -1;
}
//Wenn die Auflösung nicht 1024*768 ist
if ((surface.dwHeight != 768) || (surface.dwWidth != 1024))
{
//Die Auflösung anpassen
hResult = lpDD2->SetDisplayMode(1024,768,32,0,0);
if (hResult == DDERR_INVALIDMODE)
{
_CrtDbgReport(_CRT_ERROR,0,2015,"dbtest","%i",hResult);
Fehler("Auflösung konnte nicht verändert werden!");
return -1;
}
}
//Das Hauptprogramm
//Am Ende die Auflösung wieder zurückstellen
if (lpDD2->RestoreDisplayMode() != DD_OK)
{
Fehler("Auflösung konnte nicht wiederhergestellt werden!");
}
//Und lpDD2 wieder freigeben
lpDD2->Release();
return 0;
}
[/PHP]
Bei irgendwelchen Fragen, einfach fragen:D
Gruß
Guybrush