inaktive Dialoge?



  • es klappt irgendwie ni aber ich glaube ich hab es nicht gut genug beschrieben was mein problem ist: nämlich ist dass fenster nicht direkt inaktiv sondern sehen alle Elemente aktiv aus aber sie reagieren irgendwie nicht auf meine befehle....

    PS:Würd ja gern screenshot einfügen weiß nloß ni wie^^



  • OK hab ne Lösung gefunden weiß zwar nicht ob dir irgendjemand was bringt aber ich poste sie trotzdem mal

    Irgendwie hatte ich im 2. Dialog(cconect) ein fenster dass nicht mehr da war aber trotzdem noch nachrichten bekommen hat 😮 also hab ich nach EndDialog() noch DestroyWindow() eingebaut und es funktionierte^^

    LRESULT CALLBACK cconnect (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    
        switch (message)                  /* handle the messages */
        {
    
            case WM_CLOSE:
            {
    
                EndDialog( hwnd, 0);
                 DialogBox( hInst,MAKEINTRESOURCE(IDR_DIALOG),hwndw,(DLGPROC)abschicken);
                return 0;
            }
            case WM_COMMAND:
            {
                if(LOWORD(wParam)==IDC_SUBMIT1)
                {
    
                    char*cport=(char*)malloc(sizeof(char)*100);
    
                    GetDlgItemText(hwnd,IDC_SERV,cip,100);
                    GetDlgItemText(hwnd,IDC_PORT,cport,100);
                    sscanf(cport,"%d",&icport);
                    EndDialog( hwnd, 0); //hier der Dialog sollte eigentlich jetz zerstört werden aber er tut es nicht
                    DestroyWindow(hwnd);//weshalb ich dies eingebaut habe^^
                    DialogBox( hInst,MAKEINTRESOURCE(IDR_DIALOG),hwndw,(DLGPROC)abschicken);
    
                    return 0;
                    }
            }
    
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
        return 0;
    }
    

    Schöne Weihnachten und danke für eure Hilfe :xmas1: :xmas1: :xmas2:


  • Mod

    ... ich habe selten so einen Unfug gesehen.

    Vieleicht solltest Du Dich etwas mit der Windows API auseinandersetzen.
    EndDialog ist nicht dafür da den Dialog zu zerstören. Er beendet den Dialog. D.h. er wird versteckt und erstbeendet, wenn die Nachrichtenschleife beendet. Die kann aber nicht beendet werden weil Du ja schon den nächsten Dialog modal erzeugst.



  • hab mich mit der winapi auseinandergesetzt hab aber trotzdem noch ne frage dasselbe passiert auch wenn ich aus meinem Dialog ne MessageBox() aufrufen will und davor muss ich doch keine Nachrichtenschleife beenden odER?



  • hallo! auf WM_INITDIALOG solltest du wohl mit (INT_PTR)TRUE antworten...



  • hab ich versucht so

    WM_INITDIALOG:
    {
    ....
    ....
    ....
    return (INT_PTR)TRUE;
    }
    

    so bleibt das problem das gleiche



  • habe noch etwas heruasgefunden
    wenn ich.

    default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
    

    weglasse siehr mein dialog ganz komisch aus irgendwie hat er dann keinen rahmen mehr und außeredem gibt es manche Fenster doppelt????? 😮



  • habe fehler gefunden,oder jedenfalls gehts jetzt 😃

    Ich habe jedes return 0; durch ein break; ersetzt und bei der Message Switch anweisung default:return false gesetzt jetzt geht es weiß bloß ni warum 😃

    Frohe Weihnachten



  • von speicher wieder freigeben hälst du wohl auch nichts. ein statisches
    array würde den selben zweck erfüllen, schneller sein, und automatisch freigegeben
    werden. trotzdem malloc's du überall ein paar 100 bytes. das is nicht schön 😞



  • ok werde es ändern 😃


Anmelden zum Antworten