<?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[Nach GetOpenFileName() kein Datei erstellen mehr möglich!]]></title><description><![CDATA[<p>Hey!</p>
<p>Nach einem Aufruf von GetOpenFileName() kann ich keine Dateien mehr erstellen! Zumindest nicht im Verzeichnis, wo auch die .exe liegt. Auf C:\\ zB. geht es...</p>
<p>Woran liegt das? Ich kann es mir einfach nicht erklären!<br />
Es ist absolut komisch!</p>
<p>Die .exe liegt in &quot;C:\\DATA\\C++\\Projects\\Log\\Debug&quot;.<br />
Nach einem Aufruf von GetOpenFileName():</p>
<p>logFile.open(&quot;C:\\bla.txt&quot;, ios::out); // Funktioniert<br />
logFile.open(&quot;bla.txt&quot;, ios::out); // Funktioniert NICHT, KEINE Fehlerflags!<br />
logFile.open(&quot;folder\\bla.file&quot;, ios::out); // Funktioniert NICHT, &quot;fail&quot; Fehlerflag...</p>
<p>Und das ganze passiert nur, wenn ich auch eine Datei im Open File Dialog auswähle. Wenn ich gleich wieder auf Cancel klicke, tritt das Problem nicht auf. Es ist aber egal welche Datei ich anwähle, außerdem mache ich ja nix mit ihr...</p>
<pre><code class="language-cpp">char filePathName[MAX_PATH];
OPENFILENAME openFileName = { };
openFileName.lStructSize = sizeof(OPENFILENAME);
openFileName.hwndOwner = windowHandle;
openFileName.lpstrFile = filePathName;
openFileName.lpstrFile[0] = '\0';
openFileName.nMaxFile = MAX_PATH;
openFileName.lpstrFilter = &quot;All\0*.*\0&quot;;
openFileName.nFilterIndex = 1;
openFileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&amp;openFileName);
</code></pre>
<p>Was pfuscht Windows da?</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218674/nach-getopenfilename-kein-datei-erstellen-mehr-möglich</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 01:43:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218674.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jul 2008 15:31:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 15:31:14 GMT]]></title><description><![CDATA[<p>Hey!</p>
<p>Nach einem Aufruf von GetOpenFileName() kann ich keine Dateien mehr erstellen! Zumindest nicht im Verzeichnis, wo auch die .exe liegt. Auf C:\\ zB. geht es...</p>
<p>Woran liegt das? Ich kann es mir einfach nicht erklären!<br />
Es ist absolut komisch!</p>
<p>Die .exe liegt in &quot;C:\\DATA\\C++\\Projects\\Log\\Debug&quot;.<br />
Nach einem Aufruf von GetOpenFileName():</p>
<p>logFile.open(&quot;C:\\bla.txt&quot;, ios::out); // Funktioniert<br />
logFile.open(&quot;bla.txt&quot;, ios::out); // Funktioniert NICHT, KEINE Fehlerflags!<br />
logFile.open(&quot;folder\\bla.file&quot;, ios::out); // Funktioniert NICHT, &quot;fail&quot; Fehlerflag...</p>
<p>Und das ganze passiert nur, wenn ich auch eine Datei im Open File Dialog auswähle. Wenn ich gleich wieder auf Cancel klicke, tritt das Problem nicht auf. Es ist aber egal welche Datei ich anwähle, außerdem mache ich ja nix mit ihr...</p>
<pre><code class="language-cpp">char filePathName[MAX_PATH];
OPENFILENAME openFileName = { };
openFileName.lStructSize = sizeof(OPENFILENAME);
openFileName.hwndOwner = windowHandle;
openFileName.lpstrFile = filePathName;
openFileName.lpstrFile[0] = '\0';
openFileName.nMaxFile = MAX_PATH;
openFileName.lpstrFilter = &quot;All\0*.*\0&quot;;
openFileName.nFilterIndex = 1;
openFileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&amp;openFileName);
</code></pre>
<p>Was pfuscht Windows da?</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552508</guid><dc:creator><![CDATA[ceplusplus*loggedoff]]></dc:creator><pubDate>Wed, 23 Jul 2008 15:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 15:42:36 GMT]]></title><description><![CDATA[<p>Der File Dialog ändert evtl. das aktuelle verzeichnis, deine relativen Pfade zeigen also woanders hin.</p>
<p>Und ja, das war unter Windows schon immer so, &quot;pfuschen&quot; würd' ich das nicht nennen. Ich find's auch doof - aber es heißt ja schließlich &quot;aktuelles&quot; verzeichnis, nicht &quot;Verzeichnis, das mal aktuell war, als das Programm gestartet wurde&quot;.</p>
<p>Also: aktuelles Verzeichnis (oder gleich EXE-Verzeichnis? kommt drauf an...) beim Programmstart merken, und immer absolute Pfade basteln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552517</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Wed, 23 Jul 2008 15:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 15:45:48 GMT]]></title><description><![CDATA[<p>Jo danke, habs einfach so gemacht:</p>
<pre><code class="language-cpp">char currentDirectory[MAX_PATH];
GetCurrentDirectory(MAX_PATH, currentDirectory); 
GetOpenFileName(&amp;openFileName);
SetCurrentDirectory(currentDirectory);
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552519</guid><dc:creator><![CDATA[ceplusplus*loggedoff]]></dc:creator><pubDate>Wed, 23 Jul 2008 15:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 19:44:40 GMT]]></title><description><![CDATA[<p>Da wird nichts gefuscht. Der Fehler liegt beim Programmierer. Get<strong>Current</strong>Directory gibt das <strong>aktuelle</strong> Verzeichnis aus und dieses wird nun mal geändert, wenn man mit dem Datei-Öffnen-Dialog eine Datei auswählt und das Verzeichnis wechselt. Mit GetModuleFilename(Ex) bekommst du den Pfad und den Dateinamen deiner Exe-Datei.</p>
<p>Davon mal abgesehen, ist es eine ganz schlechte Idee im Programmverzeichnis Dateien schreiben zu wollen, da dort nur der Adminsitrator Schreibrechte hat und unter Vista auch nur dann wenn er explizit Administratorenrechte anfordert.</p>
<p>Programmeinstellungen werden entweder in der Registry gespeichert oder im Profilverzeichnis des Benutzers unter AppData\&lt;Programmname&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552521</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 23 Jul 2008 19:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 17:15:38 GMT]]></title><description><![CDATA[<p>Luckie schrieb:</p>
<blockquote>
<p>Da wird nichts gefuscht. Der Fehler liegt beim Programmierer. Get<strong>Current</strong>Directory gibt das <strong>aktuelle</strong> Verzeichnis aus und dieses wird nun mal geändert wenn man mit dem Datei-Öffnen-Dialog eine Datei auswählt und das Verzeichnis wechselt. Mit GetModuleFilen(Ex) bekommst du den Pfad und den Dateinamen deiner Exe-Datei.</p>
</blockquote>
<p>Wenn's dokumentiert wäre (Zumindest auf der ersten Seite steht nix davon, sollte es aber...)</p>
<p>Luckie schrieb:</p>
<blockquote>
<p>Davon mal abgesehen, ist es eine ganz schlechte Idde im Programmverzeichnis Dateien schreiben zu wollen, da dort nur der Adminsitartor Schreibrechte hat und unter Vista auch nur dann wenn er explizit Administratorenrechte anfordert.</p>
</blockquote>
<p>Egal, das Programm ist nur für mich.</p>
<p>Luckie schrieb:</p>
<blockquote>
<p>Progarmmeinstellungen werden entweder in der Regsitry gespeichert oder im ProfilVerzeichnis des Benutzers unter AppData\&lt;Programmname&gt;.</p>
</blockquote>
<p>Schon klar.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552559</guid><dc:creator><![CDATA[ceplusplus*loggedoff]]></dc:creator><pubDate>Wed, 23 Jul 2008 17:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 19:48:19 GMT]]></title><description><![CDATA[<p>Also das Windows SDK schreibt klar und deutlich:</p>
<blockquote>
<p>Retrieves the current directory for the current process.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1552637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552637</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 23 Jul 2008 19:48:19 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 20:14:04 GMT]]></title><description><![CDATA[<p>Das sollte reichen und ist auch dokumentiert:</p>
<pre><code class="language-cpp">openFileName.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1552651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552651</guid><dc:creator><![CDATA[Meister Propper]]></dc:creator><pubDate>Wed, 23 Jul 2008 20:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Wed, 23 Jul 2008 23:47:51 GMT]]></title><description><![CDATA[<p>@Luckie<br />
Dann muss ich blind sein, da <a href="http://msdn.microsoft.com/en-us/library/ms646927(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms646927(VS.85).aspx</a> steht das nämlich nicht.</p>
<p>@Meister Propper<br />
&quot;Windows NT 4.0/2000/XP: This flag is ineffective for GetOpenFileName&quot;<br />
War mir da unsicher...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552711</guid><dc:creator><![CDATA[ceplusplus*loggedoff]]></dc:creator><pubDate>Wed, 23 Jul 2008 23:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Thu, 24 Jul 2008 06:00:47 GMT]]></title><description><![CDATA[<p>Beachte: Current Directory can zum Programmstart beliebig sein - nicht mal unbedingt das Programmverzeichnis.</p>
<p>Das Verzeichnis kann in einem Shortcut separat angegeben werden, beim Start von der Konsole wird das aktuelle Verzeichnis vom rufenden Prozeß geerbt.</p>
<p>Dein Programm kann also unter c:\nurfuermich\ liegen, das aktuelle Verzeichnis liegt aber auf einem CD-ROM - Laufwerk - viel Spaß beim Schreiben! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>&quot;Lokaler&quot; Dateizugriff sind trotzdem manchmal sinnvoll - z.B. für Kommandozeilen-Tools.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552749</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Thu, 24 Jul 2008 06:00:47 GMT</pubDate></item><item><title><![CDATA[Reply to Nach GetOpenFileName() kein Datei erstellen mehr möglich! on Thu, 24 Jul 2008 08:48:44 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>@Meister Propper<br />
&quot;Windows NT 4.0/2000/XP: This flag is ineffective for GetOpenFileName&quot;<br />
War mir da unsicher...</p>
</blockquote>
<p>Oh. In meiner Hilfe taucht dieser Hinweis noch gar nicht auf (Oktober 2001).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1552855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1552855</guid><dc:creator><![CDATA[Meister Propper]]></dc:creator><pubDate>Thu, 24 Jul 2008 08:48:44 GMT</pubDate></item></channel></rss>