<?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[FileDialog modifizieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin nicht gerade der Experte für MFC und Visual C++, muss aber hin und wieder mal was kleineres basteln.</p>
<p>Aktuell habe ich eine kleine Anwendung in der Mache. Mit dem Assistenten (Visual C++ 6.0) wurde eine einfache MFC Anwendung erstellt. Ich muss eine (bzw. mehrere) Datei(n) laden und habe entsprechend MyDoc::Serialize() angepasst. Das Problem ist, dass automatisch eine FileDialogbox hochkommt, die nur existierende Dateien akzeptiert. Ich müsste aber einen Namen eingeben können, der nicht existiert bzw. eine ganze Klasse von Dateien beschreibt, wie &quot;test*.txt&quot;.</p>
<p>Wie und wo muss ich eingreifen, damit ich Zugriff auf die Attribute der Auswahlbox habe, so dass eine Eingabe mit &quot;*?&quot; etc. akzeptiert und zurückgegeben werden kann?</p>
<p>Gruß</p>
<p>MQ</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202160/filedialog-modifizieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 13:09:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202160.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jan 2008 12:13:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to FileDialog modifizieren on Tue, 08 Jan 2008 12:13:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin nicht gerade der Experte für MFC und Visual C++, muss aber hin und wieder mal was kleineres basteln.</p>
<p>Aktuell habe ich eine kleine Anwendung in der Mache. Mit dem Assistenten (Visual C++ 6.0) wurde eine einfache MFC Anwendung erstellt. Ich muss eine (bzw. mehrere) Datei(n) laden und habe entsprechend MyDoc::Serialize() angepasst. Das Problem ist, dass automatisch eine FileDialogbox hochkommt, die nur existierende Dateien akzeptiert. Ich müsste aber einen Namen eingeben können, der nicht existiert bzw. eine ganze Klasse von Dateien beschreibt, wie &quot;test*.txt&quot;.</p>
<p>Wie und wo muss ich eingreifen, damit ich Zugriff auf die Attribute der Auswahlbox habe, so dass eine Eingabe mit &quot;*?&quot; etc. akzeptiert und zurückgegeben werden kann?</p>
<p>Gruß</p>
<p>MQ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1432964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432964</guid><dc:creator><![CDATA[MasterQ]]></dc:creator><pubDate>Tue, 08 Jan 2008 12:13:38 GMT</pubDate></item><item><title><![CDATA[Reply to FileDialog modifizieren on Tue, 08 Jan 2008 14:36:42 GMT]]></title><description><![CDATA[<p>Vielleicht hilft dir das hier weiter</p>
<p><a href="http://functionx.com/visualc/controls/filedialog.htm" rel="nofollow">http://functionx.com/visualc/controls/filedialog.htm</a></p>
<p>edit:<br />
das hier könnte interessant sein:</p>
<pre><code>char strFilter[] = { &quot;BCR Files (*.bcr)|*.bcr|All Files (*.*)|*.*||&quot; };
</code></pre>
<p>MfG Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433060</guid><dc:creator><![CDATA[TokTom]]></dc:creator><pubDate>Tue, 08 Jan 2008 14:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to FileDialog modifizieren on Tue, 08 Jan 2008 15:38:02 GMT]]></title><description><![CDATA[<p>TokTom schrieb:</p>
<blockquote>
<p>Vielleicht hilft dir das hier weiter</p>
<p><a href="http://functionx.com/visualc/controls/filedialog.htm" rel="nofollow">http://functionx.com/visualc/controls/filedialog.htm</a></p>
<p>edit:<br />
das hier könnte interessant sein:</p>
<pre><code>char strFilter[] = { &quot;BCR Files (*.bcr)|*.bcr|All Files (*.*)|*.*||&quot; };
</code></pre>
<p>MfG Tom</p>
</blockquote>
<p>Das Problem ist, dass ich selbst diese Box gar nicht aufrufe. Dies geschieht irgendwo tief im System. In der Datei MyAppDoc.cpp steht eine Funktion zur Modifikation zur Verfügung, die da heißt MyAppDoc::Serialize(CArchive&amp; ar). In dieser ist vorgesehen, dass der Programmierer seinen Code zum Speichern oder Laden einfügt. In dieser Funktion kann ich den ausgewählten Dateinamen über ar.GetFile()-&gt;GetFilePath() abrufen und meiner eigenen Routine zum Laden übergeben. Kommt der Programmablauf an diese Stelle, ist die Dialogbox schon längst erschienen.</p>
<p>Wenn der User den Menüpunkt Datei-Öffnen anklickt, wird die Funktion aufgerufen, die zu ID_FILE_OPEN gehört. Diese führt diverse Unterroutinen auf und irgendwo wird auch die FileDialogbox auf den Bildschirm geschmissen. Dann kann man was auswählen und weiter geht's. Irgendwann landet man in der oben genannten Funktion Serialize. Da ist aber schon alles passiert!</p>
<p>Meine Frage ist, wie ich an diese Dialogbox rankomme. Ich habe versucht, mit dem Klassenassistenten an die Funktion ranzukommen, die ID_FILE_OPEN bearbeitet. Ich lande aber immer nur im Konstruktor der entsprechenden Klasse. Der konkrete Aufruf der Dialogbox bleibt für mich irgendwo verborgen.</p>
<p>Ich vermute, dass es einen Schalter oder ein Attribut der Dokumentenklasse gibt, wo man das Verhalten der Dialogbox steuern kann. Nur welcher und wo??</p>
<p>Gruß</p>
<p>MQ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433097</guid><dc:creator><![CDATA[MasterQ]]></dc:creator><pubDate>Tue, 08 Jan 2008 15:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to FileDialog modifizieren on Tue, 08 Jan 2008 15:43:45 GMT]]></title><description><![CDATA[<p>Wenn du in der Serialize() bist, ist es tatsächlich ein wenig zu spät. Aber du kannst mit dem Klassenassistenten die OnFileOpen() Methode überladen lassen<sup>*</sup> und dann das machen, was dir auch immer zu dem Thema einfällt (und damit die ganze interne Verarbeitung von MFC umgehen).</p>
<p><sup>*</sup> Object ID &quot;ID_FILE_OPEN&quot; und Message &quot;COMMAND&quot; auswählen, &quot;Add Function&quot; klicken, den Namen bestätigen und mit &quot;Edit Code&quot; in die Funktion reinspringen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433104</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 08 Jan 2008 15:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to FileDialog modifizieren on Tue, 08 Jan 2008 16:32:18 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Wenn du in der Serialize() bist, ist es tatsächlich ein wenig zu spät. Aber du kannst mit dem Klassenassistenten die OnFileOpen() Methode überladen lassen<sup>*</sup> und dann das machen, was dir auch immer zu dem Thema einfällt (und damit die ganze interne Verarbeitung von MFC umgehen).</p>
<p><sup>*</sup> Object ID &quot;ID_FILE_OPEN&quot; und Message &quot;COMMAND&quot; auswählen, &quot;Add Function&quot; klicken, den Namen bestätigen und mit &quot;Edit Code&quot; in die Funktion reinspringen</p>
</blockquote>
<p>YEP, das ist eine Methode der Applicationklasse. Überlade ich die, dann schneide ich alles danach einfach ab. Möchte ich das? Ich würde lieber nur an der einen Stelle eine kleine Modifikation machen.</p>
<p>Gibt es die Möglichkeit da punktuell einzugreifen, bzw. zu sehen, welche Routinen aufgerufen werden? Sowas wie eine Stack, der die aufrufenden Routinen anzeigt oder aber sowas wie eine Hierarchienzeige des Quellcodes, damit ich mal sehen kann, was alles zwischen OnOpenFile und Serialize dazwischen hängt? (-&gt;Visual C++ 6.0)</p>
<p>Gruß</p>
<p>MQ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433144</guid><dc:creator><![CDATA[MasterQ]]></dc:creator><pubDate>Tue, 08 Jan 2008 16:32:18 GMT</pubDate></item><item><title><![CDATA[Reply to FileDialog modifizieren on Wed, 09 Jan 2008 06:44:01 GMT]]></title><description><![CDATA[<p>Du könntest im Debugger verfolgen, was bei der Abarbeitung der Standard-OnFileOpen()-Methode alles passiert, was besseres fällt mir leider nicht ein.</p>
<p>(Aber trotzdem - in der Serialize() Methode hast du bereits eine geöffnete Datei - und bis dahin brauchst du auch einen gültigen Dateinamen (und kein Muster ala &quot;test*.txt&quot;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433386</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Jan 2008 06:44:01 GMT</pubDate></item><item><title><![CDATA[Reply to FileDialog modifizieren on Wed, 09 Jan 2008 08:28:50 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>(Aber trotzdem - in der Serialize() Methode hast du bereits eine geöffnete Datei - und bis dahin brauchst du auch einen gültigen Dateinamen (und kein Muster ala &quot;test*.txt&quot;))</p>
</blockquote>
<p>Stimmt, in der Serialize ist die Datei schon geöffnet. Das habe ich gar nicht bedacht.</p>
<p>Danke</p>
<p>MQ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433434</guid><dc:creator><![CDATA[MasterQ]]></dc:creator><pubDate>Wed, 09 Jan 2008 08:28:50 GMT</pubDate></item></channel></rss>