UnregisterClass



  • Hallo,

    Ich würde gerne ein Fenster komplett löschen.
    Wie ich bereits weiß, geht das mit DestroyWindow und
    UnregisterClass.

    Blos bekomme ich von UnregisterClass immer eine 0 zurück.

    char * clsname = new char[10];
    
    GetClassName(myhwnd,(LPTSTR) clsname,10);
    UnregisterClass((LPTSTR) clsname,hInst);
    

    Jemand ne idea?



  • Was erhoffst du dir davon UnregisterClass aufzurufen? Sämtliche Fensterklassen werden automatisch bei Programmende entfernt.

    Die Funktion funktioniert nicht, wenn ein Fenster dieser Klasse existiert. Außerdem können Systemklassen wie button nicht entfernt werden.



  • cd9000 schrieb:

    Sämtliche Fensterklassen werden automatisch bei Programmende entfernt.

    Wofür gibt es denn dann die Funktion überhaupt?



  • Außerdem können Systemklassen wie button nicht entfernt werden.

    Im eigenen Prozess kann man sie aber schon entfernen.
    z.B.

    UnregisterClass("Button", NULL);
    MessageBox(NULL, "Test", NULL, MB_OK);
    

    Dann kann die MsgBox nicht mehr erstellt werden. 🤡



  • Ich würds halt gern ausprobieren. Muß ja nicht immer alles Sinn geben. Und ich dachte, viel. kann mir ja jmd. helfen.
    Wenn ich ein Fenster "destroye" ists halt eigentlich noch da und man kann zb. nicht denselben Klassennamen verwenden.
    Deswegen interessierts mich halt... Einfach aus "wissbegier" 😉

    Also wenn einer nen Tip hat, wärs schön. 🙂



  • // Um den Klassennamen festzustellen fragst du das Fenster myhwnd danach:
    GetClassName(myhwnd,(LPTSTR) clsname,10);
    // Hier willst du die Fensterklasse deregistrieren. Das Fenster myhwnd existiert aber immer noch.
    UnregisterClass((LPTSTR) clsname,hInst);
    

    Irgendwas hast du übersehen. 😉



  • Was schreibst du für einen Quatsch?!

    Draven23 schrieb:

    Wenn ich ein Fenster "destroye" ists halt eigentlich noch da

    Nein, ists nicht!

    Draven23 schrieb:

    und man kann zb. nicht denselben Klassennamen verwenden.

    Klar kannst du das.



  • @Webfritzi:
    Kannst Du mir dann vielleicht mal verraten, warum der Klassenname dann noch
    besetzt ist??

    Ausserdem steht bei MSDN auch nicht, daß er die Klasse auch löscht!



  • Klar, die Fensterklasse besteht noch, sodass du damit weitere Fenster anlegen kannst. Automatisch gelöscht wird die Fensterklasse erst, wenn der Prozess beendet wird 😉


Anmelden zum Antworten