Frage zu WM_NCDESTROY
-
Hallo,
in der MSDN steht zu WM_NCDESTROY u.a. folgendes :
MSDN schrieb:
Return Values
If an application processes this message, it should return zero.Remarks
This message frees any memory internally allocated for the window.Nun mal angenommen, jemand behandelt WM_NCDESTROY selbst und gibt 0 zurück.
Gibt dann das Betriebssystem den 'memory internally allocated' nicht mehr frei ?
-
Doch! Dieser Kommentar ist überflüssig und irritierend.
Das Verhalten des Systems ändert sich in keiner Weise, egal was Du zurück gibst.
MS hält sich durch die entsprechenden Anmerkungen über die Rückgabewerte einfach ein Türchen offen um später Funktionalitäten nachrüsten zu können.
Ich bezweifle aber, dass dies jemals bei WM_NCDESTROY geschehen wird.Das grundlegende Fensternachrichten sich sehrwohl ändern können zeigt WM_QUERYENDSESSION in Vista. Man sollte sich als an die Vorgaben halten.
http://blog.m-ri.de/index.php/2007/03/26/vista-beendet-programme-auch-wenn-wm_queryendsession-false-returniert/
-
Martin Richter schrieb:
Man sollte sich als an die Vorgaben halten.
Das ist hier das oberste Ziel. Aber das wird einem manchmal ganz schön schwer gemacht.
Kann man also bei WM_NCDESTROY bedenkenlos 0 zurückgeben ohne ein Speicherleck zu riskieren (was ja ein Widerspruch zur MSDN wäre) ?
Allgemein geht es um eine Anwendung, in der mitgezählt werden soll, wie oft (und wie lange) ein zur Anwendung gehöriges Fenster geöffnet und geschlossen wird.
Speziell geht es um die Formulierung der dazugehörigen 'WndProc'.Dort gilt als (unsere) Vorgabe, daß die 'DefWindowProc' nur an einer einzigen Stelle aufgerufen werden darf/soll.
-
[quote="merkerKann man also bei WM_NCDESTROY bedenkenlos 0 zurückgeben ohne ein Speicherleck zu riskieren (was ja ein Widerspruch zur MSDN wäre) ?
[/quote]Ich sehe keinen Widerspruch.
