|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nigs Super JLI'ler
Anmeldedatum: 19.12.2002 Beiträge: 359
Medaillen: Keine
|
Verfasst am: 22.02.2004, 20:18 Titel: |
|
|
wennd as stimmt was me sagt dann ist eben ne schleife in der funktion CreateDialog. |
|
Nach oben |
|
|
me Junior JLI'ler
Anmeldedatum: 10.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 24.02.2004, 06:04 Titel: |
|
|
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! |
|
Nach oben |
|
|
Sec Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88
Medaillen: Keine
|
Verfasst am: 24.02.2004, 20:01 Titel: |
|
|
Ich hab jetzt alles versucht es geht einfach nicht
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 _________________ MFG Sec |
|
Nach oben |
|
|
Nahar Senior JLI'ler
Alter: 36 Anmeldedatum: 16.07.2003 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 24.02.2004, 21:08 Titel: |
|
|
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 . 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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 24.02.2004, 22:05 Titel: |
|
|
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 |
|
|
Sec Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88
Medaillen: Keine
|
Verfasst am: 25.02.2004, 00:36 Titel: |
|
|
Danke Christian mit dein Code gehts _________________ MFG Sec |
|
Nach oben |
|
|
|
|
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
|