CFileDialog使用時に記憶されるディレクトリについて – プログラミング – Home

CFileDialog使用時に記憶され...
 
通知
すべてクリア

[解決済] CFileDialog使用時に記憶されるディレクトリについて


ロト
 ロト
(@ロト)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

いつもお世話になっています。

<環境>
WinXP/.NET2003/MFC

ファイル選択ボタンが複数あるアプリを作成しているのですが、
ひとつひとつ選択するのは面倒なので複数同時に選択して、
一括して指定できるボタンも作成しようと思っています。
(個別に選択するボタンも残す必要があります)

個別のほうはシンプルにCFileDialogで問題なく取得できます。
複数のほうもOFN_ALLOWMULTISELECTフラグで問題なく取得できます。
ただし、個別のほう、つまり1ファイルのみ選択した場合は、
OSがどこかで選択したディレクトリを記憶しているようで、
次にCFileDialogを使用した際に、前回オープンしたディレクトリが
デフォルト表示されるようになるのですが、複数ファイルを
選択した場合はその情報が記憶されないのです。

CFileDialog定義以降の使い方はOFN_ALLOWMULTISELECTのフラグ有無以外は同じです。
さらに複数選択可能なダイアログで1ファイルだけを選んだ場合は、
ディレクトリが記憶されます。

OSのどこで記憶されているかは別にしてアプリケーションを終了しても
前回使用したディレクトリを覚えているのは便利なので、
複数選択した場合も記憶させたいのですが、何か方法はないでしょうか?

自分が思いついたのは、個別/複数で共通の変数に使用したディレクトリを格納して、
CFileDialog定義後、m_ofn.lpstrInitialDirへコピーする、という方法で、
上手くいきましたが、アプリケーションを再起動するとリセットされてしまうので、
個別に関しては機能ダウンとなってしまいます。

そもそもどこで記憶されているのか、レジストリを調べてもそれらしいものが
見つからず、ネットで色々検索したのですが、同じような壁に当たった人は
いないようです。

宜しくお願いします。


引用未解決
トピックタグ
二
 二
(@二)
ゲスト
結合: 17年前
投稿: 4
 

INIファイルに書き込むとか?


返信引用
ロト
 ロト
(@ロト)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

ニさん

ご回答ありがとうございます。
出来ればアプリケーションファイル単体で使用したいので、
iniファイルへの書き込みは最後の手段かなぁと考えております。
やはりOSの記憶される場所については未知の世界なのでしょうか・・。


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

> やはりOSの記憶される場所については未知の世界なのでしょうか・・。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU
を見てみるとよろしいかと…。


返信引用
ロト
 ロト
(@ロト)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

瀬戸っぷ さん

ご回答ありがとうございます。
やはりレジストリにあるんですね。
そこに保存されるかどうかは何で決まるのでしょうか。
もし強制的に書き込める使い方がCFileDialogクラスに
ありましたらご教授頂ければ助かります。


返信引用
オレンジフィッシュ
 オレンジフィッシュ
(@オレンジフィッシュ)
ゲスト
結合: 18年前
投稿: 58
 

> そこに保存されるかどうかは何で決まるのでしょうか。
勝手に OS が履歴情報として書き込むと思う。

> もし強制的に書き込める使い方がCFileDialogクラスに
> ありましたらご教授頂ければ助かります。
普通にレジストリに書き込むクラスでも使えばいいと思う。


返信引用
ロト
 ロト
(@ロト)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

オレンジフィッシュさん

ご回答ありがとうございます。
レジストリを自分でいじるしか方法が無いのであれば、
素直にiniファイルで対応しようと思います。
皆さん、ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました