Bildschirmauflösung ändert sich nicht mit "ChangeDisplaySettings"
-
Hallo!
Benutzer Compiler ist "mingw32".
Warum läuft folgender code, ändert aber nichts an der Auflösung des Monitors?
Als Return kommt immer ein DISP_CHANGE_SUCCESSFUL.
Hab das Internet jetzt über eine Stunde abgesucht und diverse Möglichkeiten vergeblich versucht...Hier der code, Hilfe ist willkommen:
#include<windows.h> #include<stdio.h> #include<conio.h> #define CDS_FORCE 0x80000000 DWORD weite_neu = 1024; DWORD hoehe_neu = 768; DWORD farbtiefe = 32; DWORD wiederholfrequenz = 75; int main(){ DEVMODE d; int i,iResult; memset(&d,0,sizeof(d)); d.dmSize = sizeof(d); d.dmDisplayFlags = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL; printf("mode: %d x %d -> ",weite_neu,hoehe_neu); d.dmPelsHeight = hoehe_neu; d.dmPelsWidth = weite_neu; d.dmBitsPerPel = farbtiefe; //d.dmDisplayFrequency = wiederholfrequenz; // Testen, ob die Einstellungen unterstützt werden iResult = ChangeDisplaySettings(&d,CDS_TEST); switch(iResult) { case DISP_CHANGE_SUCCESSFUL: if(ChangeDisplaySettings(&d,CDS_FORCE)==DISP_CHANGE_SUCCESSFUL) puts("SUCCESS"); else puts("MIST!"); break; case DISP_CHANGE_RESTART: puts("RESTART");break; case DISP_CHANGE_BADFLAGS: puts("BADFLAGS");break; case DISP_CHANGE_FAILED: puts("FAILED");break; case DISP_CHANGE_BADMODE: puts("BADMODE");break; case DISP_CHANGE_NOTUPDATED: puts("NOTUPDATED");break; default: puts("ERROR");break; } getch(); }Gruß
-
hi
ganz einfach:
bei der initialisierung von DEVMODE musst du noch dmFields angeben..
für die Auflösung und Farbtiefe wär dasd.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL;siehe: http://msdn.microsoft.com/en-us/library/aa452943.aspx
bei dmFields sind da eben alle Flags aufgelsitet... für die Frequenz bräuchteste bestimmt noch ein andres flag.. aber das findeste bei msdn (link)
ich hoffe das hilft, bei mir hats jeden falls funktioniert
MFG
-
Danke, das war es.
