<?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[Erstellen eines Dialoges als einziges Fenster?]]></title><description><![CDATA[<p>Hallo,</p>
<p>mein Problem ist folgendes:</p>
<p>Ich bin eben dabei einen Wecker zu programmieren, über CreateDialog():</p>
<pre><code>[cpp]      hwnd = CreateDialog(hThisInstance, MAKEINTRESOURCE(IDD_UHR),
             NULL, uhrproc);
             [/cpp]
</code></pre>
<p>Um das Teil so klein wie möglich zu halten hab ich versucht auf das Hauptfenster zu verzichten, was auch soweit geklappt hat. Allerdings bin ich mit dem Versuch gescheitert die Dlg-Prozedur als Hauptprozedur (wndproc) umzuschreiben (ich bekomm da einen Invalid Conversion Error weil mein Dialog ein Bool-Callback ist). Das Programm läuft, allerdings sieht es so aus als ob die (immer noch vorhandene) wnd-proc komplett ignoriert wird.<br />
Das Freigeben der verwendeten Resourcen beim Ausstieg aus dem Programm hab ich somit dann mal in WM_CLOSE im Dialog-Fenster gepackt statt in WM_DESTROY in der wnd-proc.</p>
<p>Meine Frage ist nun:</p>
<p>Ist der von mir eingeschlagene Weg statthaft oder gibt es eine andere, sauberere Lösung (wovon ich mal stark ausgehe)?</p>
<p>Hab schon im Forum gesucht, aber leider nix gefunden was annähernd Bezug zu meinem 'Problem' hätte.</p>
<p>Danke im Voraus für Eure Hilfe!</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/86053/erstellen-eines-dialoges-als-einziges-fenster</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 11:16:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/86053.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Sep 2004 10:32:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Wed, 15 Sep 2004 10:32:53 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>mein Problem ist folgendes:</p>
<p>Ich bin eben dabei einen Wecker zu programmieren, über CreateDialog():</p>
<pre><code>[cpp]      hwnd = CreateDialog(hThisInstance, MAKEINTRESOURCE(IDD_UHR),
             NULL, uhrproc);
             [/cpp]
</code></pre>
<p>Um das Teil so klein wie möglich zu halten hab ich versucht auf das Hauptfenster zu verzichten, was auch soweit geklappt hat. Allerdings bin ich mit dem Versuch gescheitert die Dlg-Prozedur als Hauptprozedur (wndproc) umzuschreiben (ich bekomm da einen Invalid Conversion Error weil mein Dialog ein Bool-Callback ist). Das Programm läuft, allerdings sieht es so aus als ob die (immer noch vorhandene) wnd-proc komplett ignoriert wird.<br />
Das Freigeben der verwendeten Resourcen beim Ausstieg aus dem Programm hab ich somit dann mal in WM_CLOSE im Dialog-Fenster gepackt statt in WM_DESTROY in der wnd-proc.</p>
<p>Meine Frage ist nun:</p>
<p>Ist der von mir eingeschlagene Weg statthaft oder gibt es eine andere, sauberere Lösung (wovon ich mal stark ausgehe)?</p>
<p>Hab schon im Forum gesucht, aber leider nix gefunden was annähernd Bezug zu meinem 'Problem' hätte.</p>
<p>Danke im Voraus für Eure Hilfe!</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/607680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/607680</guid><dc:creator><![CDATA[CodeJunkie]]></dc:creator><pubDate>Wed, 15 Sep 2004 10:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Wed, 15 Sep 2004 10:36:57 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist der von mir eingeschlagene Weg statthaft oder gibt es eine andere, sauberere Lösung (wovon ich mal stark ausgehe)?</p>
</blockquote>
<p>dialoge sind auch nur stinknormale fenster<br />
ich würds auch so machen...;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/607687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/607687</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 15 Sep 2004 10:36:57 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Wed, 15 Sep 2004 11:31:30 GMT]]></title><description><![CDATA[<p><a href="http://www.winapi.net/index.php?inhalt=tipp2" rel="nofollow">WinAPI.net: Gerüst für einen modalen Dialog</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/607726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/607726</guid><dc:creator><![CDATA[Hepi]]></dc:creator><pubDate>Wed, 15 Sep 2004 11:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Thu, 16 Sep 2004 14:11:35 GMT]]></title><description><![CDATA[<p>Danke für die Antworten und den Link.<br />
Ich kannte die betreffende Seite zwar schon, hatte sie aber anscheinend nur überflogen und nicht realisiert dass die WinMain genau das macht was ich nu nachgefragt hab.</p>
<p>Hab das ma so umgesetzt und es läuft erwartungsgemäß.</p>
<p>Unabhängig davon hab ich aber ein anderes Problem.<br />
Mir ist aufgefallen dass nach längerem 'Betrieb' meines Weckers die User Resourcen (ich hab W98se) extrem in den Keller gehen. Hab schon mehrfach kontrolliert ob ich Resourcen ordnungsgemäß wieder freigebe und alles scheint korrekt zu sein, wobei das meiste eh erst am Programmende freigegeben wird.<br />
Diese Probleme sind bei anderen Applikationen die ich geschrieben habe nie aufgetreten. Da ich dort aber auch keinen Timer benutzt hab vermute ich dass es möglicherweise etwas damit zu tun hat.</p>
<p>Hat jemand irgendwelche Tips wie ich der Sache auf den Grund gehen kann?</p>
<p>Danke im Voraus!</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/608391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/608391</guid><dc:creator><![CDATA[CodeJunkie]]></dc:creator><pubDate>Thu, 16 Sep 2004 14:11:35 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Thu, 16 Sep 2004 15:48:14 GMT]]></title><description><![CDATA[<p>Dazu müßtest Du den Code deines Programmes zeigen, den case WM_TIMER: (oder die TimerCallback-Funktion)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/608477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/608477</guid><dc:creator><![CDATA[Hepi]]></dc:creator><pubDate>Thu, 16 Sep 2004 15:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Thu, 16 Sep 2004 23:13:17 GMT]]></title><description><![CDATA[<p>Ich hab im WM_TIMER eine Vergleichfunktion zwischen aktueller Zeit und Weckzeit, die bei Übereinstimmung einen Song abspielt und ne MessageBox ausgibt, nach dem Schließen der Messagebox den Song stopt+schließt und das wars. Eigentlich recht unspektakulär. Ich hab diesen Bereich nu ma komplett ausgelagert und starte das Ganze nun mit ner PostMessage bei Übereinstimmung. Nach dem ersten Testlauf siehts noch ganz gesund aus, mit den Resourcen, muß dass mal ein paar Stunden laufen lassen und kontrollieren.<br />
Könnte die MessageBox prinzipiell für den hohen Resourcenverbrauch verantwortlich gewesen sein? Ich mein, die Abarbeitung von WM_TIMER ist ja dadurch an der Stelle gestoppt, aber die Messages laufen weiter ein....?¿</p>
<p>Gruß</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/608713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/608713</guid><dc:creator><![CDATA[CodeJunkie]]></dc:creator><pubDate>Thu, 16 Sep 2004 23:13:17 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Fri, 17 Sep 2004 06:30:47 GMT]]></title><description><![CDATA[<p>CodeJunkie schrieb:</p>
<blockquote>
<p>Könnte die MessageBox prinzipiell für den hohen Resourcenverbrauch verantwortlich gewesen sein?</p>
</blockquote>
<p>Definitiv nein!</p>
<p>CodeJunkie schrieb:</p>
<blockquote>
<p>Ich mein, die Abarbeitung von WM_TIMER ist ja dadurch an der Stelle gestoppt, aber die Messages laufen weiter ein....?¿</p>
</blockquote>
<p>Sobald Du mit return oder break aus dem case WM_TIMER rausspringst nicht! Du bekommst immer nur 1 WM_TIMER-Nachricht, solange Du die vorherige nicht aus der MessageQueue abgearbeitet hast, ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/608761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/608761</guid><dc:creator><![CDATA[Hepi]]></dc:creator><pubDate>Fri, 17 Sep 2004 06:30:47 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen eines Dialoges als einziges Fenster? on Fri, 17 Sep 2004 11:38:35 GMT]]></title><description><![CDATA[<p>Hepi schrieb:</p>
<blockquote>
<p>CodeJunkie schrieb:</p>
<blockquote>
<p>Könnte die MessageBox prinzipiell für den hohen Resourcenverbrauch verantwortlich gewesen sein?</p>
</blockquote>
<p>Definitiv nein!</p>
<p>CodeJunkie schrieb:</p>
<blockquote>
<p>Ich mein, die Abarbeitung von WM_TIMER ist ja dadurch an der Stelle gestoppt, aber die Messages laufen weiter ein....?¿</p>
</blockquote>
<p>Sobald Du mit return oder break aus dem case WM_TIMER rausspringst nicht! Du bekommst immer nur 1 WM_TIMER-Nachricht, solange Du die vorherige nicht aus der MessageQueue abgearbeitet hast, ja.</p>
</blockquote>
<p>Hm, seltsam. Ich hab das Teil nun mal über Nacht durchlaufen lassen und die User-Resourcen sind konstant geblieben.<br />
Wo liegt nun mein Denkfehler bezüglich der Timer-Nachrichten? Wenn ich innerhalb von WM_TIMER eine Messagebox öffne und diese nicht mit OK (oder sonstwas) bestätigt wird, wird der case WM_TIMER doch auch nicht komplett abgeschlossen, oder? Prinzipiell könnte man ja den Rückgabewert der MessageBox auswerten wollen, im Anschlußcode und zum Beispiel je nach Wert das Progi beenden etc. Zumal, das hab ich in meinem letzten Post vergessen, WM_TIMER ja auch für die Aktualisierung der Uhrzeitanzeige verantwortlich ist. Im Falle des Alarms (hatte!) ich zwar durch Änderung des Variablenwertes die folgende Vergleichsfunktion + den Folgecode bei Übereinstimmung ausgegliedert, für zukünftige Messages, aber die Anzeige der aktuellen Uhrzeit funktionierte weiterhin. Somit müßten ja weiterhin WM_TIMER Nachrichten eingegangen und abgearbeitet worden sein.<br />
*verwirrtbin*</p>
<p>Gruß</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/609065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/609065</guid><dc:creator><![CDATA[CodeJunkie]]></dc:creator><pubDate>Fri, 17 Sep 2004 11:38:35 GMT</pubDate></item></channel></rss>