| 
			
				|  | JLI Spieleprogrammierung 
 
 |  
 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |  
		| Autor | Nachricht |  
		| Skabus Mini JLI'ler
 
 
 
 Anmeldedatum: 14.07.2006
 Beiträge: 3
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 14.07.2006, 15:04    Titel: Problem mit der erstellung eines einfachen Windowsfensters |   |  
				| 
 |  
				| Ich besitze die Ausgabe "Jetzt lerne ich: DirectX 9 und Visual C++" und ich bin da auf grund meiner verlorengegangen Buch-CD auf folgendes Problem gestoßen(orginal aus dem Easy-Codingforum):
 
 Ich arbeite mich gerade in die Abgründe
 von Windows ein und würde mich sehr freuen
 wenn mir jemand sagen kan was ich beim
 erstellen eines einfachen Windows Fenster falsch
 mache.Als Hinweis: Ich nutze die AUtorenversion
 von C++(V6.0) und das DirectX 9 SDK.Hier nun
 mein Ansatzcode.Witzig an der Sache ist,das die
 Syntax 100% stimmt ich aber scheinbar einen
 logischen Fehler mache:
 
 
  	  | CPP: |  	  | #include <iostream.h> #include <string.h>
 #include <stdio.h>
 #include <windows.h>
 
 HWND CreateMainWindow(HINSTANCE hInstance);
 
 LRESULT CALLBACK MessageHandler(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
 
 
 HWND hWnd = 0;                                  //globale Variable Fenster-Handle
 
 
 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
 {
 //Fenster erzeugen und Handle speichern
 hWnd = CreateMainWindow(hInstance);
 
 if(hWnd == 0)
 {
 MessageBox(0,"Das Fenster konnte nicht erzeugt werden","Fehler",MB_OK |
 MB_ICONEXCLAMATION);
 return 0;
 }
 
 //Strucktur, in der Informationen zur Nachricht gespeichert werden
 MSG msg;
 
 //Die Schleife läuft bis  die Nachricht WM_QUIT empfangen wird
 while(GetMessage(&msg,NULL,0,0))
 {
 //Nachricht an die Calbackfunktion senden
 TranslateMessage(&msg);
 DispatchMessage(&msg);
 
 }
 
 //Rückgabewert an Windows
 return 0;
 }
 
 
 LRESULT CALLBACK MessageHandler(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
 {
 //testet um welche Nachricht es sich handelt
 switch(msg)
 {
 //wenn das Fenster geschlossen wird, wird
 //WM_QUIT gesendet, umj das Programm zu beenden
 case WM_DESTROY:
 PostQuitMessage(0)
 return 0;
 break;
 }
 
 return (DefWindowProc(hWnd,msg,wParam,lParam));
 
 }
 
 
 HWND CreateMainWindow(HINSTANCE hInstance)
 {
 WNDCLASSEX wndClass = {
 sizeof(WNDCLASSEX),          //Angabe der Größe
 CS_DBLCLKS | CS_OWNDC |         //Angabe der verwendeten Stile zum
 CS_HREDRAW | CS_VREDRAW,      //Darstellen des Fensters
 MessageHandler,                              //Callback-Funktion
 0,                                                 //NULL
 0,                                                 //NULL
 hInstance,
 LoadIcon(NULL,IDI_WINLOGO),
 LoadCursor(NULL,IDC_ARROW),
 (HBRUSH)GetStockObject(WHITE_BRUSH),
 NULL,
 "Windows Class"
 LoadIcon(NULL, IDI_WINLOGO)
 
 };
 
 return CreateWindowEx(NULL,"WindowClass","Ein einfaches Fenster",
 WS_OVERLAPPEDWINDOW | WS_VISIBLE,
 0,0,400,300,NULL,NULL,hInstance,NULL);
 
 }
 
 
 | 
 
 Beim komplilieren und erstellen gibt es kein problem.Aber wenn cih es starte bekomme ich die von mir erstelle Fehlermeldung "Fenster konnte nicht erzeugt werden" dies geht ja aus der abfrage von "hWnd == 0" hervor.Ich finde aber keinen ersichtlichen Grund warum den '0' und nicht der Wert des erzeugten Fenster zurückgegeben wird....
 
 Also wenn jemand sich das mal ansehen könnte,und mir sagen könnte was ich falsch mache wäre ich demjenigen sehr dankbar^^
 
 Danke im vorraus
 
 MfG Ska
 |  |  
		| Nach oben |  |  
		|  |  
		| Florian Super JLI'ler
 
  
 Alter: 37
 Anmeldedatum: 20.06.2003
 Beiträge: 302
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 14.07.2006, 16:22    Titel: |   |  
				| 
 |  
				|  	  | CPP: |  	  | #include <iostream> #include <string.h>
 #include <stdio.h>
 #include <windows.h>
 
 HWND CreateMainWindow(HINSTANCE hInstance);
 
 LRESULT CALLBACK MessageHandler(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
 
 
 HWND hWnd = 0;                                  //globale Variable Fenster-Handle
 
 
 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
 {
 //Fenster erzeugen und Handle speichern
 hWnd = CreateMainWindow(hInstance);
 
 if(hWnd == 0)
 {
 MessageBox(0,"Das Fenster konnte nicht erzeugt werden","Fehler",MB_OK |
 MB_ICONEXCLAMATION);
 return 0;
 }
 
 //Strucktur, in der Informationen zur Nachricht gespeichert werden
 MSG msg;
 
 //Die Schleife läuft bis  die Nachricht WM_QUIT empfangen wird
 while(GetMessage(&msg,NULL,0,0))
 {
 //Nachricht an die Calbackfunktion senden
 TranslateMessage(&msg);
 DispatchMessage(&msg);
 
 }
 
 //Rückgabewert an Windows
 return 0;
 }
 
 
 LRESULT CALLBACK MessageHandler(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
 {
 //testet um welche Nachricht es sich handelt
 switch(msg)
 {
 //wenn das Fenster geschlossen wird, wird
 //WM_QUIT gesendet, umj das Programm zu beenden
 case WM_DESTROY:
 PostQuitMessage(0);
 return 0;
 break;
 }
 
 return (DefWindowProc(hWnd,msg,wParam,lParam));
 
 }
 
 
 HWND CreateMainWindow(HINSTANCE hInstance)
 {
 WNDCLASSEX wndClass = {
 sizeof(WNDCLASSEX),          //Angabe der Größe
 CS_DBLCLKS | CS_OWNDC |         //Angabe der verwendeten Stile zum
 CS_HREDRAW | CS_VREDRAW,      //Darstellen des Fensters
 MessageHandler,                              //Callback-Funktion
 0,                                                 //NULL
 0,                                                 //NULL
 hInstance,
 LoadIcon(NULL,IDI_WINLOGO),
 LoadCursor(NULL,IDC_ARROW),
 (HBRUSH)GetStockObject(WHITE_BRUSH),
 NULL,
 "Windows Class",
 LoadIcon(NULL, IDI_WINLOGO)
 
 };
 
 RegisterClassEx(&wndClass);
 
 return CreateWindowEx(NULL,"Windows Class","Ein einfaches Fenster",
 WS_OVERLAPPEDWINDOW | WS_VISIBLE,
 0,0,400,300,NULL,NULL,hInstance,NULL);
 
 }
 | 
 
 So sollt es funktionieren
   PS:. Hast die WindowsClass nicht Registriert (RegiserClassEx) und den flaschen klassen namen in der CreateWindowEx funktion verwendet
 _________________
 Theorie ist, wenn man alles weiss und nichts funktioniert.
 Praxis ist, wenn alles funktioniert und keiner weiss warum.
 |  |  
		| Nach oben |  |  
		|  |  
		| Skabus Mini JLI'ler
 
 
 
 Anmeldedatum: 14.07.2006
 Beiträge: 3
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 14.07.2006, 16:44    Titel: |   |  
				| 
 |  
				| Oh stimmt,ich danke danke vielmals,das rettet mir den Tag^^ 
 MfG Ska
 |  |  
		| 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
 |