JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

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



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

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

wennd as stimmt was me sagt dann ist eben ne schleife in der funktion CreateDialog.
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: 24.02.2004, 06:04    Titel: Antworten mit Zitat

Hab rausgefunden das es 2 Funktionen gibt:

einmal CreateDialog(...) und einmal DialogBox(...); Beide haben die gleichen Parameter, sind aber im Handling ein wenig unterschiedlich. Das erstere lieftert ein HWND zurück, das zweite nur eine integer.

Falls man CreateDialog(...) benutzt, braucht man jedoch einen Windows-Message-Handler. DialogBox an sich braucht keinen, hat wohl einen integriert. DialogBox() ist modal (nix anderes geht während der Dialog läuft), im Gegensatz zu seinem Äquvivalent.

Lests am besten im forger's winapi tutorial nach, in topic 7 und 8:
http://www.winprog.org/tutorial/
_________________
If something is stupid and it works, it ain't stupid! Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sec
Junior JLI'ler



Anmeldedatum: 18.09.2002
Beiträge: 88

Medaillen: Keine

BeitragVerfasst am: 24.02.2004, 20:01    Titel: Antworten mit Zitat

Ich hab jetzt alles versucht es geht einfach nicht Crying or Very sad

Hier ist der Code
Code:

#include <windows.h>

BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);

HWND hDlg = 0;

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
{
   hDlg = CreateDialog(hInstance, MAKEINTRESOURCE(101), NULL, DlgProc);

   if(hDlg == NULL)
   {
      MessageBox(NULL, "Fehler", "Fehler", MB_OK);
   }
   
   MSG msg;

    while(GetMessage(&msg,NULL,0,0))
   {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_DESTROY:
                   PostQuitMessage(0);
                    return 0;
                break;       
    }

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


MFG Sec Crying or Very sad
_________________
MFG Sec
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 24.02.2004, 21:08    Titel: Antworten mit Zitat

Ich weiss nicht ob das was damit zu tun hat, aber Dialoge beendet man mit EndDialog(hDlg, LOWORD(wParam));

Vieleicht erzeugt dieses PostQuiteMessage() einen Fehler. Glaub ich zwar nicht, wollt aber auch mitreden Very Happy . Nein, aber probiers mal - kann sein das es das auf das falsche Fenster bezeiht oder, wer versteht schon diese Microsoft-Compiller...

EDIT: Probier auch mal explitiet die Buttons zu behandelt, also über WM_COMMAND. Manche Dialoge vertragen WM_DESTROY nicht so gut.
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: 24.02.2004, 22:05    Titel: Antworten mit Zitat

Code:

#include <windows.h>

BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);

HWND hDlg = 0;

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
{
   hDlg = CreateDialog(hInstance, MAKEINTRESOURCE(101), GetDesktopWindow(), DlgProc);

   int r = GetLastError();

   if(hDlg == NULL)
   {
      MessageBox(NULL, "Fehler", "Fehler", MB_OK);
   }
   
   ShowWindow(hDlg,SW_SHOW);

   MSG msg;

    while(GetMessage(&msg,NULL,0,0))
   {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_DESTROY:
                   PostQuitMessage(0);
                    return 0;
                break;       
    }

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


So geht es erstmal, natürlich muss du einen Dialog anlegen (Resource), der dann die ID 101 bekommt.

Wenn ich return DefDlgProc(hwnd, msg, wParam, lParam); stürzt das Programm ab....

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: 25.02.2004, 00:36    Titel: Antworten mit Zitat

Danke Christian mit dein Code gehts Very Happy
_________________
MFG Sec
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 Zurück  1, 2
Seite 2 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