JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Dialog
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sec
Junior JLI'ler



Anmeldedatum: 18.09.2002
Beiträge: 88

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 05:40    Titel: Dialog Antworten mit Zitat

Hi

Wenn ich das Code so kompilier und ausführe erscheint das Dialogfeld
nicht, kann mir einer helfen?

Code:

#include <windows.h>

HWND g_DlgHWnd;

BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   g_DlgHwnd = CreateDialog(hInstance, MAKEINTRESOURCE(101), NULL, DlgProc);

   return 0;
}

BOOL CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
   //MSG
   //...
   //...

    return DefDlgProc(hwnd, msg, wParam, lParam);
}


MFG Sec
_________________
MFG Sec
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
me
Junior JLI'ler



Anmeldedatum: 10.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 14:29    Titel: Antworten mit Zitat

Könnte sein dass du InitCommonControls() nicht aufrufst, oder dein Dialog-Proc liefert als Standard TRUE zurück (was zu hässlichen Darstellungsfehlern führt).

Debug halt mal, und check welche int-value du von CreateDialog() zurückbekommst. Wenn da nicht -1 steht, sollte der Dialog eigentlich korrekt sein.

P.S.
Kannst auch mal probieren als Parent-Window NULL anzugeben. Wennste nämlich keins hast, kannste auch keinen Dialog aufmachen. Und ich hab nicht gesehen, dass irgendwo in deinem Code ein Fenster erstellt wird.
_________________
If something is stupid and it works, it ain't stupid! Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 14:31    Titel: Antworten mit Zitat

Ich würde eher denken, dass es daran liegt, dass du keine Hauptnachtichtenschleife hast, das Programm beendet sich außerdem sofort !?

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
me
Junior JLI'ler



Anmeldedatum: 10.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 14:33    Titel: Antworten mit Zitat

edit:*war schwachsinn*
_________________
If something is stupid and it works, it ain't stupid! Very Happy


Zuletzt bearbeitet von me am 19.02.2004, 14:34, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 14:34    Titel: Antworten mit Zitat

Ist vielleicht nebensächlich, aber NULL sollte gehen, dann ist der Desktop das Parent, wenn mich nicht alles täuscht.

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



Anmeldedatum: 18.09.2002
Beiträge: 88

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 15:53    Titel: Antworten mit Zitat

habs auch mit ne Nachrichten Schleife ausm Buch versucht geht auch nicht
das Programm beendet sich gleich ohne das das Dialogfeld angezeigt wird

und wenn ich es mit
Code:

if(g_DlgHWnd == NULL)
{
      MessageBox("Fehler", "Fehler", MB_OK);
}

prüfe erscheint auch kein MessageBox

MFG Sec
_________________
MFG Sec
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 15:56    Titel: Antworten mit Zitat

du hast keine hauptschleife in der main funktion...
er erstellt das fenster, beendet das programm aber gleich wieder durch return 0.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
me
Junior JLI'ler



Anmeldedatum: 10.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 16:45    Titel: Antworten mit Zitat

Im übrigen wirft CreateDialog() nen Fehler bei -1!!! Bei Null haste sicher keinen Fehler. Die liefert dir keinen Handle, sondern ne integer.
_________________
If something is stupid and it works, it ain't stupid! Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 19.02.2004, 16:55    Titel: Antworten mit Zitat

falsch!

Return Values
If the function succeeds, the return value is the handle to the dialog box.

If the function fails, the return value is NULL. To get extended error information, callGetLastError.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
me
Junior JLI'ler



Anmeldedatum: 10.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 20.02.2004, 16:23    Titel: Antworten mit Zitat

sorry, stimmt. hab beim überfliegen meines codes ne 1 mit ner -1 verwechselt.

ich meine mich jedoch vage erinnern zu können, dass ich beim failen der Funktion, nie NULL bekommen hab.

naja, vergessts.

p.s.
Im übrigen braucht man nicht zwingend die Message-Schleife, wenn man den Dialog ohne Parent aufmacht. Probier auchmal statt hInstance GetModuleHandle(NULL) aus.
_________________
If something is stupid and it works, it ain't stupid! Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 20.02.2004, 16:40    Titel: Antworten mit Zitat

me hat Folgendes geschrieben:
Im übrigen braucht man nicht zwingend die Message-Schleife, wenn man den Dialog ohne Parent aufmacht.


Wie soll es sonst gehen? Wie soll die Applikation ohne Nachrichtenschleife merken, dass ein Knopf gedrückt wurde, usw?

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



Anmeldedatum: 10.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 21.02.2004, 13:19    Titel: Antworten mit Zitat

Code:

int WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmd, int iShow)
{
InitCommonControls();
CreateDialog(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_DIALOG),NULL,DlgProc);
return 0;
}


Wo braucht man da ne Schleife? Funktioniert einwandfrei, auch ohne die Message-Schleife. Der Dialog nimmt da schon alle Commands entgegen. Beend ich den Dialog, is mein Prog aus.

Aber ne Schleife brauch ich da net.

P.s. Natürlich hat der Dialog ne eigene Schleife, aber ich brauch keine Schleife mit PeekMessage, bzw. GetMessage;
_________________
If something is stupid and it works, it ain't stupid! Very Happy
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: 21.02.2004, 13:30    Titel: Antworten mit Zitat

Wieso braucht man da keine Schleife? Shocked
CreateDialog macht nix anderes, als den Dialog zu generieren. Ist der Dialog fertig, wird die Funktion wieder verlassen und der Code weiter ausgeführt.
Da die nächste Zeile return 0; enthält, wird das Programm verlassen.
Was sollte es denn sonst am Verlassen hindern? Wink
_________________
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
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 21.02.2004, 16:12    Titel: Antworten mit Zitat

Könnte es sein, dass du vorher mit Visual Basic oder sowas geproggt hast me??? Da muss man keine extra nachrichtenschleife machen ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
me
Junior JLI'ler



Anmeldedatum: 10.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 22.02.2004, 19:20    Titel: Antworten mit Zitat

Ich glaub ihr checkt net was ich mein:
Ich brauch nur CreateDialog aufrufen, dann läuft der Dialog bis ich ihn schliesse und das Prog verlassen wird. So ist das jedenfalls mit der WinAPI in C++.
Da brauch ich keine Windows-Nachrichten Schleife.
100% sicher!
_________________
If something is stupid and it works, it ain't stupid! Very Happy
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 -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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