MessageBox(0,'Konnte Vollbildmodus nicht aktivieren!','Error', MB_OK or MB_ICONERROR);
exit;
end;
DC:= GetDC(Handle);
ifnot InitOpenGL then Application.Terminate;
RC:= CreateRenderingContext( DC,
[opDoubleBuffered],
32,
24,
0,0,0,
0);
ActivateRenderingContext(DC, RC);
Application.OnIdle:= IdleHandler;
SetupGL;
Init;
end;
Ich bekomme zwar Vollbild, allerdings wird die Auflösung nicht umgestellt.
Also eigentlich wird nichts umgestellt, außer halt, dass der ganze Bildschirm mit Bild bedeckt ist.
Ich kriege auch keine der Fehlerbenachrichtigungen zu sehen.
Es passiert einfach nix.
habe den source mal so verändert, dass er ne nachricht raushaut wenn ich was anderes als DISP_CHANGE_SUCCESSFUL rauskriege. Und siehe da ich kriege meine Nachricht.
Was nu?
Gruß
Jan
EDIT: Habe jetzt mal alle möglichen Rückgabewerte für den Vergleich eingesetzt und anscheinend ist der Rückgabewert wohl folgender:
DISP_CHANGE_BADMODE
dabei habe ich ja eigentlich wirklich nur auf eine niedrigere Auflösung und die gleiche farbtiefe gestellt.
Nochmal edit: Anscheinend klappts jetzt.. ich hab aber eigentlich rein garnichts geändert. außer, dass ich mal ein bischen über das katalys control center meine Auflösungen umgestellt habe.
Ich hasse Computer :/
Gruß
Jan
Zuletzt geändert von LANJAN am So Jan 29, 2006 13:38, insgesamt 1-mal geändert.
Genau so ist es bei mir auch. hab den gleichen quelltext und bekomme die gleichen meldungen .. woran liegt es denn nun ? warum schaltet der die Auflösung nich t um ?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich denke es liegt an der Frequenz. Die muss nämlich haar genau existieren. Und wenn nicht dann weigert sich Windows. Also den Teil dmDisplayFrequency und das Flag für die Frequenz DM_DISPLAYFREQUENCY weglassen. Das sollte es dann schon gewesen sein. Eigentlich müsste man her gehen und die verfügbaren Frequenzen abfragen und dann eine dieser setzen. Sonst nimmt er wahrscheinlich 60 oder falls sie überschrieben wurde.
Ich hab den Code mal getestet da ich auch gerne einen Vollbildmodus haben würde doch leider hat der die Auflösung meines OSs runter. Also wenn ich das Programm schließe oder minimiere ist die Auflösung auch unter Windows falsch..
Gibt es etwas dagegen? Ich habe mir überlegt das man im OnClose Bereich vielleicht die alte Auflösung wiederherstellen könnte aber dann muss ich diese 1. erst rausfinden und 2. wäre das eine unschöne möglichkeit. Gibt es vielleicht einen Weg nur die Aplikation in dieser Auflösung zu zeigen?
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Ich weiß ja nicht, was man hier davon hält, dass alte Threads immer wieder ausgegraben werden, aber um deine Frage zu beantworten:
Code:
ChangeDisplaySettings(devmode(nil^),0);
Am Ende der Anwendung (OnDestroy?) und ein Wechsel in die vorherige Auflösung erfolgt. Warum kann ich dir allerdings auch nicht sagen, steht aber in irgendwelchen alten Templates hier.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Na ja. Ideal wäre es natürlich einen eigenen Thread aufzumachen aber das ist gerade noch okay. Sofern so etwas nicht ausartet sehe ich da so jetzt kein großes Problem.
Und zu der Frage. Du MUSST das Flag CDS_FULLSCREEN setzen. Wenn du das gesetzt hast dann reaktiviert Windows automatisch die ursprüngliche Auflösung beim beenden oder beim Wechsel. Ein Aufruf wie der von WhiteHunter ermöglicht ein Verlassen einer dynamischen Auflösung (Vollbild). Also auch wenn deine Anwendung noch läuft. Überprüfe dies einmal. Ich denke nämlich nicht, dass du dieses Flag benutzt.
Hm ich hatte die ganze Zeit schon das "ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN)" drin und irgendwie klappt das jetzt auch aber vorher ging es irgendwie nicht :S Da sah ich das Programm auch nicht in der Task-leiste und musste es per form1.close schließen..
Aufjedenfall ght es jetzt nachdem ich einen doppelt-gemoppelten Teil der OpenGL Initialisierung rausgenommen hab. Aber leider nur beim Schließen und nicht beim Minimieren was aber auch nicht so schlim ist, danke aufjedenfall!
Btw. ich mache nicht so gerne neue Threads zu Themen auf die es eigentlich schon gibt.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Stimmt. Ich habe dünnes gelabert. Windows setzt die Auflösung nicht bei deaktiviertem Fenster wieder zurück sondern nur wenn es geschlossen wird. Also musst du dich selber darum kümmern, dass dein Vollbildfenster minimiert wird. Oder was immer du vor hast. Bzw müsstest du dann auch den Vollbildmodus verlassen bzw bei aktiviertem Fenster wieder betreten. Also alles Handarbeit.
PS: Es macht das für andere aber durchaus einfacher wenn diese sich nicht erst durch ein anderes Thema lesen müssen. Denn das ist es nun mal. Und nicht selten entpuppen sich die einfachsten Fragen als komplexere Themen. Von der Übersicht mal ganz zu schweigen.
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.