Fenster zeigt sich nciht!
-
geeky schrieb:
Nimm statt PeekMessage() GetMessage()!
PeekMessage() gibt FALSE zurück, wenn gerade keine Nachrichten da sind und dann beendet sich dein Programm.
GetMessage() wartet dagegen auf die nächste Nachricht.PeekMessage() wird hauptsächlich bei z.B. Spielen benutzt.
(Dann sieht die Schleife aber auch leicht anders aus)Ich kenne den Unterschied und habe es auch mit GetMessage versucht. Und dann tritt auch tatsöchlich der Effekt, dass der Debugegr ausgeht nicht auf. Der Debugger läuft also weiter. Ein Fenster bekomme ich aber trotzdem nicht zu sehen

-
Ich habe folgenden Codeteil ein wenig verändert:
#include <windows.h>
#include "Vars.h"
#include "InitMainAppWindow.h"
#include "GlobalExVar.h"HWND CreateAppWindow(HINSTANCE hInst2) { HWND mah; WNDCLASSEX windowclass; bool Test; static TCHAR NAME[]=TEXT("IDMW"); windowclass.cbSize= sizeof(WNDCLASSEX); windowclass.style= CS_HREDRAW|CS_VREDRAW; windowclass.lpfnWndProc=WindowProc; windowclass.cbClsExtra = 0; windowclass.cbWndExtra = 0; windowclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); windowclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); windowclass.hCursor = LoadCursor(NULL, IDC_ARROW); windowclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1; windowclass.lpszMenuName=NULL; windowclass.lpszClassName =NAME; RegisterClassEx (&windowclass); mah = CreateWindowEx(NULL, NAME, TEXT("NAMEDESFESNTER"), WS_OVERLAPPEDWINDOW, 100,100, 300,250, NULL, NULL, hInst2, NULL); if (mah==NULL) Test=false; if (Test==false) PostQuitMessage(0); return mah; }Die folgende Stelle ist neu:
if (mah==NULL)
Test=false;
if (Test==false)
PostQuitMessage(0);Das Programm schließt sich, also stimmt etwas mit dem handle nicht. Aber ich komme einfach nciht auf den Fehler! Sieht jemand etwas?
Hoffe auf vieeeele Antworten
-
Achso und GetMessage benutze ich jetzt auch
-
belege mal noch hInstance aus der WNDCLASSEX-Struktur, also
... windowclass.cbSize= sizeof(WNDCLASSEX); windowclass.style= CS_HREDRAW|CS_VREDRAW; windowclass.lpfnWndProc=WindowProc; windowclass.cbClsExtra = 0; windowclass.cbWndExtra = 0; windowclass.hInstance = hInst2; // <-- den hier :D windowclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); windowclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); windowclass.hCursor = LoadCursor(NULL, IDC_ARROW); windowclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1; windowclass.lpszMenuName=NULL; windowclass.lpszClassName =NAME; RegisterClassEx (&windowclass); ...
-
Außerdem ist "bool Test" nicht initialisiert (und lt. Murphy immer false).
-
Tengriadon schrieb:
if (mah==NULL) Test=false; if (Test==false) PostQuitMessage(0);warum nicht:
if( !mah ) { MessageBox( 0, "beim erstellen des Hauptfensters!", "Fehler...", MB_OK ); exit( EXIT_FAILURE ); // warum denn in die Message-Loop? }?
greetz, Swordfish
BTW: Solltest Du eben erst mit C/C++ anfangen - so wie es den Anschein hat - dann lass lieber erstmal die Finger von der WinAPI und beschäftige Dich mit der Konsole.
-
Nein ich fange nicht erst mit C++ an. Das da sollte eigentlich nur ein keliner Test werden,deswegen der unsaubere Code. Dann trat aber dieses Problem auf und hier scheint ja auch keiner eine Lösung zu finden oder?
-
Hast du die Überprüfung des Windowhandles korrigiert? Wird das Fenster überhaupt erstellt (Windowhandle != 0)? Hast Du den
hInstancemember derWNDCLASSEXgesetzt? Mach mal einmemset( &windowclass, 0 sizeof( WNDCLASSEX ) )nach die deklaration der Struktur.greetz, Swordfish
-
Swordfish schrieb:
Hast du die Überprüfung des Windowhandles korrigiert? Wird das Fenster überhaupt erstellt (Windowhandle != 0)? Hast Du den
hInstancemember derWNDCLASSEXgesetzt? Mach mal einmemset( &windowclass, 0 sizeof( WNDCLASSEX ) )nach die deklaration der Struktur.greetz, Swordfish
Das mit der Überprüfung war absicht für den Schrittdurchlauf, aber ich scheine heute ein wenig auf der Leitung zu stehen. Du Hast vollkommen recht ich habe vergessen der HINSTANCE- Membervariable der Struktur einen Wert zuzuweisen!
VIELEN DANK SWORDFISH!!!!!!!!!!

Und an alle anderen natürlich auch

-
HWND CreateAppWindow(HINSTANCE hInst2) { HWND mah; WNDCLASSEX windowclass; bool Test; // <---------------------------- :open_mouth: static TCHAR NAME[]=TEXT("IDMW"); ... if (mah==NULL) Test=false; if (Test==false) // <---------------------- :open_mouth: PostQuitMessage(0); }
-
Ich glaub', das hat er schon gerafft

greetz, Swordfish
-
Xen schrieb:
Du Hast vollkommen recht ich habe vergessen der HINSTANCE- Membervariable der Struktur einen Wert zuzuweisen!
tut mir leid aber ich komm mir vollkommen verarscht vor

vllt. lesen was man dir so schreibt, denn:Fake oder Echt schrieb:
belege mal noch hInstance aus der WNDCLASSEX-Struktur, also
... windowclass.cbSize= sizeof(WNDCLASSEX); windowclass.style= CS_HREDRAW|CS_VREDRAW; windowclass.lpfnWndProc=WindowProc; windowclass.cbClsExtra = 0; windowclass.cbWndExtra = 0; windowclass.hInstance = hInst2; // <-- den hier :D windowclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); windowclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); windowclass.hCursor = LoadCursor(NULL, IDC_ARROW); windowclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1; windowclass.lpszMenuName=NULL; windowclass.lpszClassName =NAME; RegisterClassEx (&windowclass); ...und das war schon gestern...naja jedem das seine

-
Nicht aufregen, BitWax, is halt ein Schussel

greetz, Swordfish
-
ja wie gesagt, jedem das seine, muss er ja wissen
