bekomme kein fenster



  • Hallo,

    bin neu was WinApi angeht habe den devc++ und folgenden Code der nicht geht. weiß aber nicht warum? kann mir jemand helfen.

    #define STRICT
    #include <windows.h>
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    const char szAppName[] = "mein fenster";
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
        HWND hWnd;
        MSG  msg;
        WNDCLASS wc;
    
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    
    RegisterClass (&wc);
    
    hWnd = CreateWindow (szAppName, "Titelleiste",
                                    WS_OVERLAPPEDWINDOW,
                                    CW_USEDEFAULT,
                                    CW_USEDEFAULT,
                                    CW_USEDEFAULT,
                                    CW_USEDEFAULT,
                                    NULL,
                                    NULL,
                                    hInstance,
                                    NULL);
    
    ShowWindow(hWnd, iCmdShow);
    UpdateWindow(hWnd);
    
    while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
          }
    
     return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
            switch (message)
            {
             case WM_DESTROY:
                  {
                  PostQuitMessage(0);
                  return 0;
                  }
            }
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    

    Fehlermeldungen gibt es auch nicht!
    Ansich wird alles aufgeführt jedoch erscheint das fenster nirgends außer im task-manager bei den prozessen!



  • Solche einfachen Beispiele gibts doch zu hauf im Netz. Such dir ein funktionierendes und vergleiche dann um den Fehler zu finden.

    ➡ http://www.winapi.net/index.php?inhalt=tipp1



  • Ein Fehler ist auf jeden Fall das du die WNDCLASS Struktur nicht vollständig ausfüllst.



  • UrsaMajor schrieb:

    Fehlermeldungen gibt es auch nicht!

    kann es auch gar nicht geben da du keinerlei fehlerabfangung machst 😉

    wie -gk schon gesagt hat, die wndclass ist unvollständig.

    wc.lpszClassName = szAppName;
    

    den an welche wndclass soll den dein fenster "gebunden" werden? (createwindow erster param) ➡ msdn

    eigentlich musste registerclass fehlschlagen, aber das fängst du ja nicht ab 😉
    createwindow das gleiche 😃



  • Außerdem ist die WindowProc falsch, oder nicht??
    Also das

    return DefWindowProc(hWnd, message, wParam, lParam);
    

    sollte Teil des "default case" der "switch" Anweisung sein!
    Das "return 0" solltest du durch "break" ersetzen und das "return 0" ans Ende der
    Funktion setzen, musst du aber nicht.

    Versuche dieses Tutorial mal:

    http://www.winprog.org/tutorial/simple_window.html

    PS: Lies dir dieses mal durch:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/windowclassreference/windowclassstructures/wndclass.asp


Anmelden zum Antworten