What is the error ??



  • 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 = {};
    

Anmelden zum Antworten