What is the error ??
-
Hi, ich kann den Fehler nicht finden, kein Fenster wird angezeigt

int WinMain(HINSTANCE hinst,HINSTANCE hpinst,LPSTR ComLine,int show) { WNDCLASSEX windowinfo; MSG msg; //Window Class ! windowinfo.hIcon = LoadIcon(NULL,IDI_APPLICATION); windowinfo.hCursor = LoadCursor(NULL,IDC_ARROW); windowinfo.hInstance = hinst; windowinfo.lpfnWndProc = WndProc; windowinfo.cbSize = sizeof(WNDCLASSEX); windowinfo.lpszClassName = "YZClass"; windowinfo.style = CS_VREDRAW | CS_HREDRAW | CS_OWNDC | CS_DBLCLKS; windowinfo.lpszMenuName = NULL; windowinfo.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); windowinfo.cbWndExtra = NULL; windowinfo.cbClsExtra = NULL; RegisterClassEx(&windowinfo); HWND mainWnd = CreateWindowEx(NULL,"YZClass","Passowrd Fish",WS_OVERLAPPEDWINDOW,0,0,400,400,NULL,NULL,hinst,NULL); ShowWindow(mainWnd,SW_SHOW); while(GetMessage(&msg,mainWnd,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return(0); }
-
Dann zeig mal deine WndProc...
-
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
return (DefWindowProc(hwnd, msg, wparam, lparam));
}
-
Hat niemand ahnung an was dass liegt
-
Gib doch das WS_VISIBLE mal direkt im "CreateWindowEx" an...
-
Wie kann dass sein dass das nicht Funktioniert

Hit nochmals der Quelltext:
#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam) { return (DefWindowProc(hwnd, msg, wparam, lparam)); } int WINAPI WinMain(HINSTANCE hinst,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nShowCmd) { WNDCLASSEX windowinfo; MSG msg; //Window Class ! windowinfo.hIcon = LoadIcon(NULL,IDI_APPLICATION); windowinfo.hCursor = LoadCursor(NULL,IDC_ARROW); windowinfo.hInstance = hinst; windowinfo.lpfnWndProc = WndProc; windowinfo.cbSize = sizeof(WNDCLASSEX); windowinfo.lpszClassName = "YZClass"; windowinfo.style = CS_VREDRAW | CS_HREDRAW | CS_OWNDC | CS_DBLCLKS; windowinfo.lpszMenuName = NULL; windowinfo.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); windowinfo.cbWndExtra = NULL; windowinfo.cbClsExtra = NULL; RegisterClassEx(&windowinfo); HWND mainWnd = CreateWindowEx(NULL,"YZClass","Passowrd Fish",WS_OVERLAPPEDWINDOW | WS_VISIBLE,0,0,400,400,NULL,NULL,hinst,NULL); while(GetMessage(&msg,mainWnd,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return(0); }Hoffe jamand kann mir schnell helfen

-
Check mal den Return-Wert von CreateWindow(Ex) (notfalls auch GetLastError verwenden).
-
Achja:
// ... while(GetMessage(&msg,mainWnd,0,0)) // ...

// ... while(GetMessage(&msg,[b]NULL[/b],0,0)) // ...
-
Hi, wenn ich stadt
HWND mainWnd = CreateWindowEx(NULL,"YZClass","Passowrd Fish",WS_OVERLAPPEDWINDOW | WS_VISIBLE,0,0,400,400,NULL,NULL,hinst,NULL);
Folgendes angebe
HWND mainWnd = CreateWindowEx(NULL,"Button","Passowrd Fish",WS_OVERLAPPEDWINDOW | WS_VISIBLE,0,0,400,400,NULL,NULL,hinst,NULL);
Funktiniert es

Rückgabe von CreateWindow ist 0.
Ich denke etwas an meiner WndClass ist Faul
Gruss
-
Jupi bin selbst drauf gekommen, habe die Windowclass nicht volsändig ausgefüllt

windowinfo.hIconSm = NULL;
Folgende hat gefält.
-
Errrrror schrieb:
Hat niemand ahnung an was dass liegt
Errrrror schrieb:
Wie kann dass sein dass das nicht Funktioniert
Errrrror schrieb:
Hit nochmals der Quelltext
Errrrror schrieb:
Hoffe jamand kann mir schnell helfen
Errrrror schrieb:
Hi, wenn ich stadt
Errrrror schrieb:
habe die Windowclass nicht volsändig ausgefüllt
Errrrror schrieb:
Folgende hat gefält

-
@Badestrand: Jo lol
...
-
Ich hab noch ne Frage

Wieso muss ich hier
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}NULL angeben und nich das hwnd auf mein Fenster

-
Damit du auch wirklich alle Nachrichten bekommst, die deinem Thread/Prozess zustehen.
Siehe auch
hier.
-
MSDN schrieb:
Because the return value can be nonzero, zero, or -1, avoid code like this:
while (GetMessage( lpMsg, hWnd, 0, 0)) ...
The possibility of a -1 return value means that such code can lead to fatal application errors. Instead, use code like this:
BOOL bRet;
while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}Apropo... So eine gründliche Abfrage sehe ich vielleicht in 1 von 100 Source-Codes...
-
Badestrand schrieb:
Apropo... So eine gründliche Abfrage sehe ich vielleicht in 1 von 100 Source-Codes...
Hm jo stimmt, mir auch schon aufgefallen. Probleme macht das aber wohl in keinen von diesen (..."100 Source-Codes")
...
-
die funktion ZeroMemory() setzt eine als parameter übergebene struktur auf NULL sprich alles wird auf NULL gesetzt. wenn du diese funktion aufrufst bevor du die windowsclass ausfüllst kannste nix mehr vergessen...
-
NULL schrieb:
die funktion ZeroMemory() setzt eine als parameter übergebene struktur auf NULL sprich alles wird auf NULL gesetzt. wenn du diese funktion aufrufst bevor du die windowsclass ausfüllst kannste nix mehr vergessen...
ROFL, darum gehts gar nit
...Es ging (mir zu mindestens) um diese Prüfung:
// ... if(bRet == -1) { // handle the error and possibly exit } // ...PS: ZeroMemory ist keine Funktion, sondern lediglich ein Makro, das sich dem Makro RtlZeroMemory bedient, welches
wiederrum die Funktion memset aufruft
.
-
CodeFinder schrieb:
PS: ZeroMemory ist keine Funktion, sondern lediglich ein Makro, das sich dem Makro RtlZeroMemory bedient, welches
wiederrum die Funktion memset aufruft
.Und memset ist widerrum eine C-Funktion, kann das sein?
-
Badestrand schrieb:
Und memset ist widerrum eine C-Funktion, kann das sein?
Jo klar gehört zur CRT, wieso ?
-
NULL schrieb:
die funktion ZeroMemory() setzt eine als parameter übergebene struktur auf NULL sprich alles wird auf NULL gesetzt.
Da würde ich lieber default Initialisierung verwenden, zumal NULL hier kontextbezogen falsch verwendet wird.
WNDCLASSEX windowinfo = {};