WM_DESTROY bei childfenstern



  • ich habe meine eigene childfensterklasse mit procedur geschrieben.
    muss ich die wm_destroy nachricht verarbeiten?
    wenn ja was mus ich beachten?



  • Ich denke das kommt darauf an, was du in deiner ChildProc machst 🙄
    Wenn du z.B. in WM_CREATE oder sonstwo Speicher reservierst solltest du ihn z.B. dort (also bei WM_DESTROY) afaik wieder freigeben 😉



  • hm.
    PostQuitMessage oder ähnliches muß ich nicht senden?
    (in dem child is nochmal ein child)

    da gibt es dann keine probleme?



  • Nein, diese Funktion rufst du im Normalfall wenn dann im der WndProc des Hauptfensters auf 😉

    honkitonk schrieb:

    (in dem child is nochmal ein child)

    da gibt es dann keine probleme?

    Was genau meinst du damit? Womit sollte es Probleme geben bzw. denkst du, dass es Probleme geben könnte?
    Vielleicht hilft dir auch folgendes Zitat aus der MSDN-Library:

    This message is sent first to the window being destroyed and then to the child windows (if any) as they are destroyed. During the processing of the message, it can be assumed that all child windows still exist.



  • das zitat kenn ich.
    es sieht bildlich so aus:
    mainwindow->childwindow1->childwindow2

    ich will jetzt nur das childwindow1 destroyen wird das childwindow2 dann auch zerstört?



  • ja sicher



  • sorry dass ich so nerve aber mein prog hängt sich irgentwo immer auf.

    sind folgende sachen erlaubt:

    funktion1()
    {
    static TCHAR* buffer = new TCHAR[size+1]; 
    ...
    delete[] buffer
    return 0;
    }
    
    funktion2()
    {
    static TCHAR* buffer = new TCHAR[size+1]; 
    ...
    delete[] buffer
    return 0;
    }
    
    funktion1()
    {
    TCHAR* feldzeiger;
    ...
    return 0;
    }
    funktion1()
    {
    TCHAR* feldzeiger;
    ...
    return 0;
    }
    


  • Den Zusammenhang verstehe ich jetzt irgendwie nicht so ganz 🙄
    Aber ich könnte mir vorstellen, dass er Probleme gibt, wenn dein buffer static ist, du aber in jedem Funktions-Aufruf delete [] aufrufst. Du solltest zumindest anschließend den Pointer auf NULL setzten, dann sollte es keine Probleme machen 🙄
    Und wegen dem Zerstören des Childs vom Child 😉 - das sollte doch eigentlich ohne Änderung bzw. Abfangen von WM_DESTROY funktionieren.


Anmelden zum Antworten