JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=4b65aef8502b2991760838fe7c33313bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Bildschirmmodus wechseln

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 22.09.2003, 19:51    Titel: Bildschirmmodus wechseln Antworten mit Zitat

Wie wechselt man mitten im Spiel von Fenster in Vollbildmodus und wieder umgekehrt? Welche Attribute ich bei Direct 3D ändern muss, ist mir klar. Doch wenn ich den Modus wechsle, bekomm ich erstmal nur nen weißen Bildschirm. Man muss die Komponenten alle neu laden. Doch wie soll das konkret aussehen? Wenn ich im Fentermodus die Menüleiste haben will und im Vollbildmodus nicht, müsste ich das Fenter neu laden. Doch wie macht man das fehlerfrei. Ich habe es nicht hingekriegt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 23.09.2003, 07:29    Titel: Antworten mit Zitat

Du musst nicht unbedingt das Hauptfenster neu laden, aber du musst die Eigenschaften des Hauptfensters anpasses: WS_POPUP im Vollbildmodus und WS_OVERLAPPEDWINDOW im Fenstermodus. Das Menu ist ebenfalls nur per Handle zu (ent)laden.
DIe DirectX-Objekte müssen freigegeben werden und anschließend neu geladen werden. also fast so, als ob du das Programm beendest und danach neu startest. (Ist vielleicht leichter so, wenn du dir Fenster oder Vollbild in der Registry merkst und das Umschalten wärend der Programmlaufzeit unterbindest)
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 23.09.2003, 09:58    Titel: Antworten mit Zitat

Also "WS_POPUP im Vollbildmodus und WS_OVERLAPPEDWINDOW im Fenstermodus" kenn ich auch. Nur wie verändern man Werte, ohne direkt ein Fenster neu erstellen zu müssen. Ich übergebe eigentlich die Werte an eine Funktion, die ein neues Fenster erstellt. Aber wie verändert man einfach nur die Attribute eines Fensters?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 29.09.2003, 18:10    Titel: Antworten mit Zitat

Du machst zwei Funktionen:
CreatePopUpWindow()
CreateOverlappedWindow()

bei der einen ist der Wert dann eben WS_POPUP bei der anderen WS_OVERLAPPEDWINDOW. Dann rufst du halt die auf, die du gerade brauchst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 06:43    Titel: Antworten mit Zitat

Ja, aber der erstellt immer ein neues Fenster bei mir. Hast du vielleicht nen Ausschnitt aus nem Programmcode, wo sowas gemacht wird?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 07:30    Titel: Antworten mit Zitat

Mit der Funktion
Code:
LONG SetWindowLong(     
    HWND hWnd,
    int nIndex,
    LONG dwNewLong
);
kannst du unter anderem auch die Fensterform verändern, also z.B. den Status WS_OVERLAPPED oder WS_POPUP setzen.
Ein Codebeispiel müsste in der MSDN zu finden sein.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 08:45    Titel: Antworten mit Zitat

Danke für den Tip.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 14:02    Titel: Antworten mit Zitat

Ich hab noch ne Frage zu SetWindowLong() bzw. SetWindowPos().
Ich habe das in einer MFC-Anwendung verwendet, indem ich ein neues Fenster(wie gehabt) erstelle.
Aber wenn ich jetzt die Parameter in der richtigen Reihenfolge schreibe, meckert der Compiler, dass die Funktion nicht soviele Parameter hat oder dass die Parameter vom falschen Typ sind.
Nachdem ich in der MSDN geguckt habe, habe ich herausgefunden, dass es da anscheinend mehrere Überladungen gibt, aber komischerweise nimmt er immer eine, die eine Windowsklasse zurückgibt und als Parameter verlangt(ich glaub "CWnd"). Ist das so normal oder kann man da was dagegen machen?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 14:51    Titel: Antworten mit Zitat

Du musst aufpassen die "richtige" Funktion zu nehmen.

Versuche es mal mit ::GetWindowLong(hwnd,index);
Die Doppelpunkte sind Absicht.

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 18:16    Titel: Antworten mit Zitat

Wofür sind die Doppelpunkte gut?
Außerdem hätte ich noch ne Frage zur Funktion SetWindowLong:
Ich habe in der MSDN-Hilfe nachgeschaut und die Parameterbeispiele durchgelesen. Unter den meisten kann ich mir nicht viel drunter vorstellen. Ich habe auch einfach mal folgendes eingegeben:

SetWindowLong(hWnd,WS_POPUP || WS_VISIBLE,WS_POPUP || WS_VISIBLE);

Es gibt kein Compilerfehler. Aber auswirkungen auf mein Fenster hatte es keine. Wie wende ich die Funktion mit der Absicht an, die Menüleiste anzeigen zu lasse bzw. ausblenden zu lassen?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 01.10.2003, 14:50    Titel: Antworten mit Zitat

Es gibt einen Unterschied zwischen logischer und binärer verknüpfung (z.B. durch Oder). Die Logische "Veroderung" ist hier aber nicht die richtige, du mußt die Binäre "Veroderung" nutzen":
SetWindowLong(hWnd,WS_POPUP | WS_VISIBLE,WS_POPUP | WS_VISIBLE);
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 01.10.2003, 18:57    Titel: Antworten mit Zitat

Also es hat alles den gleichen Effekt bei mir. Der liegt bei Null. Ich initialisiere alles neu: Direct3D, DirectXAudio, DirectInput und lade sogar die Texturen und sounds neu. Doch diese Leiste oben will einfach nicht mehr erscheinen, wenn ich von Vollbild in Fenstermodus umschalte. Gibt es eine bestimmte Reihenfolge der initialisierung die man einhalten muss?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum