Winapi wird nach Dialogbox geschlossen



  • Hallo,

    wenn ich auf Über... gehe, dann schließt sich das Fenster, nachdem ich auf OK geklick habe. Weiß einer, warum?

    #include <windows.h>
    #include "resource.h"
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    //Deklaration der Windows-Nachrichten-Prozedur
    
    int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow)
    {
        char szName[] = "Fensterklasse";
        WNDCLASS wc;
    
        wc.style         = CS_HREDRAW | CS_VREDRAW;   // CS = "class style"
        wc.lpfnWndProc   = WndProc;
        wc.cbClsExtra    = 0;
        wc.cbWndExtra    = 0;
        wc.hInstance     = hI;
        wc.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
        wc.hCursor       = LoadCursor (NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH) GetStockObject (GRAY_BRUSH);
        wc.lpszMenuName  = MAKEINTRESOURCE(MAINMENU);
        wc.lpszClassName = szName;
    
        RegisterClass (&wc);
    
        HWND hwnd = CreateWindow (szName, "", WS_OVERLAPPEDWINDOW,
                              0, 0, 400, 400, NULL, NULL, hI, NULL);
    
        ShowWindow   (hwnd, iCmdShow);
        UpdateWindow (hwnd);
    
    // Nachrichten-Schleife
        MSG msg;
            while (GetMessage (&msg, NULL, 0, 0))
            {
                TranslateMessage (&msg);
                DispatchMessage (&msg);
            }
        return msg.wParam;
    }
    
    // Windows-Nachrichten-Prozedur
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    HDC hdc;
    PAINTSTRUCT ps;
    char string[255];
    
    switch (message)
    {
    case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case ID_\1:
                LoadString(GetModuleHandle(NULL),ID_STRING_ABOUT,string,sizeof(string));
                MessageBox(hwnd,string,"Über",MB_ICONINFORMATION);
                break;
            case ID_FILE_EXIT:
                DestroyWindow(hwnd);
                break;
        }
    
    case WM_CLOSE:
        DestroyWindow(hwnd);
    case WM_DESTROY:
        PostQuitMessage (0);
        return 0;
    }
    
    return DefWindowProc (hwnd, message, wParam, lParam);
    }
    


  • Im WM_COMMAND ein break; bzw. return 0; glaub ich.



  • Stimmt 🙂
    Aber jetzt kommt bei mir beim compillen Folgende schlichte Meldung:
    syntax error
    Ich weiß aber nicht, woran das liegt.

    //Ressourcen-Skriptedatei *.rc
    
    #include "resource.h"
    
    /////////////////////////////////////////////////////////////////
    //
    // Menü
    //
    
    IDR_MENU MENU
    {
        POPUP "Datei"
        {
            MENUITEM "Anmelden", ID_LOGIN
            MENUITEM "Ende", ID_FILE_EXIT
        }
        MENUITEM "Über...", ID_ABOUT
    }
    
    /////////////////////////////////////////////////////////////////
    //
    //Stringtabelle
    //
    STRINGTABLE
    {
        ID_STRING_ABOUT, "Ein Programm"
    }
    
    /////////////////////////////////////////////////////////////////
    //
    //LogIn
    //
    IDR_LISTBOX DIALOGEX 20,20,180,70
    STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    CAPTION "TEXTFELD"
    FONT 8, "MS Sans Serif"
    {
        LTEXT "Benutzer:",-1,36,8,45,8
        EDITTEXT IDC_EDIT1, 83,6,61,13,ES_AUTOHSCROLL | WS_BORDER
        LTEXT "Passwort:",-1,36,24,45,8
        EDITTEXT IDC_EDIT2, 83,22,61,13,ES_AUTOHSCROLL | WS_BORDER
        PUSHBUTTON "&OK", IDOK, 33,50,50,14
        PUSHBUTTON "&Abbrechen", IDCANCEL, 95,50,50,14,WS_GROUP
    }
    


  • Du bist einfach nur zu blöde Microsoftsachen zu programmieren!

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1814284-and-highlight-is-.html#1814284



  • Du bist einfach nur zu blöde Microsoftsachen zu programmieren!

    😃 😃

    Mit Fehlermeldung wär's übrigens viel einfacher dir zu helfen 🙄


Anmelden zum Antworten