JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

[WinAPI] Mehere Fenster

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



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 24.10.2004, 22:53    Titel: [WinAPI] Mehere Fenster Antworten mit Zitat

hi,
ich hab am Anfang ein kleines Fenster in dem man sich einlogt..
nun möchte ich das nachdem man auf den Login Button geklickt
hat ein neues Fenster öffnet und das Login Fenster geschlossen wird..

Immer wenn ich das aber versuche dann schließt sich das login fenster
und der rest auch obwohl ich nur ein DestroyWindow(hwnd) auf das
login fenster mache...
Ich hab beide Fenster als Main Fenster (keins als Child)...

Meine Frage genau ist nun , wie realisiert man das ?
läst man ein "unsichtbares" main fenster laufen und sind
Login und das 2. Fenster dann nur Child Fenster ?

wenn nicht, wie dann ?
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 07:24    Titel: Antworten mit Zitat

Ganz einfach, in deiner WinMain machst du folgenden Aufruf
Code:

if(showStartDlg(hInstance) != IDOK)
{
    return -1;
}


und dein Dialogfenster läuft solange bis OK gedrückt wurde. Bei allen anderen Aktionen (abbrechen, Fenster mit X schließen) wird das Programm abgebrochen.

Erst nach drücken von OK (in deinem Fall Login) wird das Hauptfenster angezeigt. Allerdings musst du dein Login-Dialog als Childfenster aufrufen.
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 08:58    Titel: Antworten mit Zitat

mm, okay,aber wie ruf ich das neuen fenster nach dem login fenster auf? also sind beide fenster dann child fenster ?
und es ist kein Dialog, ich hab beides mit CreateWindowEx erzeug ....
muss ich das ändern?
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 09:10    Titel: Antworten mit Zitat

Also ich kenn es nur wenn du das als Dialogfenster laufen lässt. Rein optisch macht das ja keinen Unterschied. Vom Programm her hab ich das so:

Code:

int WINAPI WinMain(HINSTANCE hInstance,      // Handle der Programminstanz
                   HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                   LPSTR lpCmdLine,          // Kommandozeile
                   int nCmdShow)             // Art wie das Fenster angezeigt werden soll

{
   if(showStartDlg(hInstance) != IDOK)
   {
      return -1;
   }
   

// Rest der WinMain-Schleife....
....

    return 0;
}


Das Dialogfenster läuft dann solange bis OK gedrückt wurde, dann wird der Rest der WinMain abgearbeitet.

In dem Dialog selbst legst du dann Fest, was beim klicken auf OK passiert (Variablen füllen etc.) und zum schluß gibts
Code:
EndDialog(hwnd,IDOK);
um das Dialogfenster zu schließen.
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 13:51    Titel: Antworten mit Zitat

Es kann vielleicht sein, dass du in deiner WndProc von dem Main Window ein

Code:

.....
case WM_DESTROY:
PostQuitMessage(0)
break;
.......


hast.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 17:20    Titel: Antworten mit Zitat

@schneidi74: ja ich aber nur nicht mit Dialogen sondern mit Fenstern
aber ich versuchs mal so , obs auch mit festern geht, ka

@OLiver: nur so schließt er mir dann beide Fenster
obwohl beide Fenster ne eigene Callback function haben
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 17:38    Titel: Antworten mit Zitat

Hmm, ich weiß nicht, ob du mich richtig verstanden hast, habe ich vielleicht ein bisschen blöd ausgedrückt. Smile

Ich meine, wenn du den obigen Codeauschnitt in deinem MainWindow hast, ist es klar, dass sich alle schließen, weil ja eine PostQuitMessage gesendet wird, wenn dein Window mittels DestroyWindow zerstört wird und da ist klar, dass sich das ganze Programm beendet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 19:30    Titel: Antworten mit Zitat

ah ich glaub ich verstehe, das würde das Close problem beseitigen,
aber wie ist es mit dem 2. Fenster aufrufen, wie mach ich das?
setz ich es erst auf "nicht WS_VISIBLE" und später ruf ich es
mit ShowWindow auf ?
oder wie?
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 25.10.2004, 20:04    Titel: Antworten mit Zitat

schau dir mal diese Seite an:

http://www.henkessoft3000.de/

Da gibt's ein recht gutes Tut über WinApi Programmierung. Ich hab eben beim drüberfliegen glaub ich gesehen, dass da auch erklärt ist, wie man auf button-klicks reagiert.

Ich würd an deiner Stelle glaub ich so vorgehen, dass ich das 1. Fenster starte. Man da halt seinen login etc. macht und beim klicken auf Login das zweite Fenster gestartet wird. Sprich eben auf den Login Button reagieren.
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 26.10.2004, 14:08    Titel: Antworten mit Zitat

DarK hat Folgendes geschrieben:
ah ich glaub ich verstehe, das würde das Close problem beseitigen,
aber wie ist es mit dem 2. Fenster aufrufen, wie mach ich das?
setz ich es erst auf "nicht WS_VISIBLE" und später ruf ich es
mit ShowWindow auf ?
oder wie?


Denke Ja.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 26.10.2004, 16:51    Titel: Antworten mit Zitat

okay danke leute, ich check mal die sachen am wochende aus, hab leider keine Ferien Smile dann meld ich mich wieder Smile
_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 26.10.2004, 20:28    Titel: Antworten mit Zitat

ich würd einfach das Fenster mit close Windwos schließen und jmit CreateWindwos ein neues erstellen, mit eigener Callbackfunktion natürlich. dürfte ja nicht soo schwer sein, aber ich bin mir nicht sicher. Ihc lerne das gerade alles, hab mit ein hübsches Buch gekauft...
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung 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