Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 09, 2025 18:22

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Fullscreen klappt net
BeitragVerfasst: Sa Jan 28, 2006 23:33 
Offline
DGL Member

Registriert: Do Dez 01, 2005 12:55
Beiträge: 41
Hallo DelphiGLer!

Also ich fühle mich ja schon reichlich dumm, weil der source, den ich für fullscreen sogar kopiert und nicht selber geschrieben habe, nicht klappt.

Hier ist meine OnCreate Methode:


Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var dmScreenSettings: DevMode;
  3. begin
  4.   WindowState := wsMaximized;
  5.   BorderStyle := bsNone;
  6.   Form1.Cursor:=crNone;
  7.   ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
  8.   with dmScreenSettings do
  9.   begin
  10.     dmSize              := SizeOf(dmScreenSettings);
  11.     dmPelsWidth         :=640;                    // Breite
  12.     dmPelsHeight        :=480;                   // H?e
  13.     dmBitsPerPel        := 32;                      // Farbtiefe
  14.     dmDisplayFrequency  := 80;                // Bildwiederholfrequenz
  15.     dmFields            := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL or DM_DISPLAYFREQUENCY;
  16.   end;
  17.   if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then
  18.   begin
  19.     showmessage('bla');
  20.     MessageBox(0, 'Konnte Vollbildmodus nicht aktivieren!', 'Error', MB_OK or MB_ICONERROR);
  21.     exit;
  22.   end;
  23.  
  24.   DC:= GetDC(Handle);
  25.   if not InitOpenGL then Application.Terminate;
  26.   RC:= CreateRenderingContext( DC,
  27.                                [opDoubleBuffered],
  28.                                32,
  29.                                24,
  30.                                0,0,0,
  31.                                0);
  32.   ActivateRenderingContext(DC, RC);
  33.   Application.OnIdle := IdleHandler;
  34.   SetupGL;
  35.   Init;
  36. 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.

Gruß
Jan


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 29, 2006 11:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Schau mal was du als Rückgabewert von ChangeDisplaySettings bekommst. Wenn es nicht DISP_CHANGE_SUCCESSFUL ist wurde es nicht geändert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 29, 2006 13:19 
Offline
DGL Member

Registriert: Do Dez 01, 2005 12:55
Beiträge: 41
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.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 29, 2006 13:33 
Offline
DGL Member

Registriert: Mi Dez 15, 2004 20:36
Beiträge: 454
Wohnort: Wien, Österreich
Und ? Wie sieht die Nachricht ?

_________________
"Meine Mutter sagt : 'Dumm ist der, der Dummes tut'." - Forrest Gump


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 29, 2006 17:56 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
sniper hat geschrieben:
Und ? Wie sieht die Nachricht ?

Schonmal eine Nachricht mit Augen gesehen? :mrgreen:

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 05, 2006 17:51 
Offline
DGL Member

Registriert: Mi Mär 08, 2006 17:38
Beiträge: 153
Wohnort: Rümmelsheim (bei Bingen)
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 ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 05, 2006 21:16 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 29, 2006 00:27 
Offline
DGL Member

Registriert: Di Sep 19, 2006 13:24
Beiträge: 173
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 29, 2006 01:30 
Offline
DGL Member
Benutzeravatar

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:
  1. 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.

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 29, 2006 09:39 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 29, 2006 11:54 
Offline
DGL Member

Registriert: Di Sep 19, 2006 13:24
Beiträge: 173
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 29, 2006 12:25 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.022s | 17 Queries | GZIP : On ]