<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Fenster mit SW_HIDE ruft keine Destruktoren und kein WM_DESTROY auf]]></title><description><![CDATA[<p>Ich arbeite gerade an einem Programm, welches im Hintergrund laufen muss und Dateien auf Veränderung überprüft.<br />
Beim erstellen des Fensters benutze ich SW_HIDE, damit der Benutzer nichts vom Trubel mitbekommt, wenn das Programm allerdings beendet wird hatte ich erwartet, das WM_DESTROY aufgerufen wird oder wenigstens wie gewohnt alle Destruktoren aufgerufen werden.</p>
<p>Das oben zu erwartende Verhaltensmuster zeigt sich allerdings nicht, wenn z.B. das Programm durch herunterfahren des Systems oder durch schließen im Taskmanager beendet wird. Was in meinem Programm die einzige Alternative zum schließen darstellt.</p>
<p>Auf ein Fenster kann ich nicht verzichten, da ich FindWindow in manchen Fällen nutzen muss. Eine Lösung ohne Fenster kommt daher nicht in Betracht.</p>
<p>Meine Fragen sind nun folgende:</p>
<p>Ich habe bereits herausgefunden das ich nötige Aufräumarbeiten erledigen kann in dem ich WM_QUERYENDSESSION benutze(zumindest beim herunterfahren oder logout).<br />
Was mir allerdings komisch erscheint ist die Tatsache das keine Destruktoren aufgerufen werden, kann das Betriebsystem selbst ermitteln was freigegeben werden muss?<br />
Gibt es einen besseren Weg die nötigen Aufräumarbeiten zu erledigen?</p>
<p>Allen schonmal einen guten Rutsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230712/fenster-mit-sw_hide-ruft-keine-destruktoren-und-kein-wm_destroy-auf</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 01:19:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230712.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Dec 2008 09:54:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fenster mit SW_HIDE ruft keine Destruktoren und kein WM_DESTROY auf on Wed, 31 Dec 2008 09:54:58 GMT]]></title><description><![CDATA[<p>Ich arbeite gerade an einem Programm, welches im Hintergrund laufen muss und Dateien auf Veränderung überprüft.<br />
Beim erstellen des Fensters benutze ich SW_HIDE, damit der Benutzer nichts vom Trubel mitbekommt, wenn das Programm allerdings beendet wird hatte ich erwartet, das WM_DESTROY aufgerufen wird oder wenigstens wie gewohnt alle Destruktoren aufgerufen werden.</p>
<p>Das oben zu erwartende Verhaltensmuster zeigt sich allerdings nicht, wenn z.B. das Programm durch herunterfahren des Systems oder durch schließen im Taskmanager beendet wird. Was in meinem Programm die einzige Alternative zum schließen darstellt.</p>
<p>Auf ein Fenster kann ich nicht verzichten, da ich FindWindow in manchen Fällen nutzen muss. Eine Lösung ohne Fenster kommt daher nicht in Betracht.</p>
<p>Meine Fragen sind nun folgende:</p>
<p>Ich habe bereits herausgefunden das ich nötige Aufräumarbeiten erledigen kann in dem ich WM_QUERYENDSESSION benutze(zumindest beim herunterfahren oder logout).<br />
Was mir allerdings komisch erscheint ist die Tatsache das keine Destruktoren aufgerufen werden, kann das Betriebsystem selbst ermitteln was freigegeben werden muss?<br />
Gibt es einen besseren Weg die nötigen Aufräumarbeiten zu erledigen?</p>
<p>Allen schonmal einen guten Rutsch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637642</guid><dc:creator><![CDATA[Anon]]></dc:creator><pubDate>Wed, 31 Dec 2008 09:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster mit SW_HIDE ruft keine Destruktoren und kein WM_DESTROY auf on Wed, 31 Dec 2008 11:27:40 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn dein Proggie sowieso im Hintergrund läuft, wieso benötigst du ein Window?<br />
Warum schreibst Du es nicht als Dienst? Dies hat den Vorteil, dass Dein Programm automatisch vom BS informiert wird, wenn es beendet wird, ohne den Message-Mechanismus.</p>
<p>Andererseits könntest Du für dein Hide-Window die Broadcast-Messages</p>
<p>WM_SYSCOMMAND</p>
<p>auswerten, die auf jedenfall gepostet wird.</p>
<p>P.S.: Ein Dienst ist nur eine besondere Form einer Anwendung, nicht wirklich schwer zu realisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637668</guid><dc:creator><![CDATA[CStern]]></dc:creator><pubDate>Wed, 31 Dec 2008 11:27:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster mit SW_HIDE ruft keine Destruktoren und kein WM_DESTROY auf on Wed, 31 Dec 2008 16:57:36 GMT]]></title><description><![CDATA[<p>Fängst du WM_CLOSE überhaupt ab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637822</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Wed, 31 Dec 2008 16:57:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fenster mit SW_HIDE ruft keine Destruktoren und kein WM_DESTROY auf on Thu, 01 Jan 2009 09:59:26 GMT]]></title><description><![CDATA[<p>WM_CLOSE muss nicht abgefangen werden.<br />
Wenn DestroyWindiw aufgerufen wird, dann wird auch WM_DESTROY und WM_NCDESTROY versendet!</p>
<p>Ich vermute eher, das DestroyWindow nicht aufgerufen wird.<br />
Wie wird das Fenster zerstört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637922</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 01 Jan 2009 09:59:26 GMT</pubDate></item></channel></rss>