Visual C++のMFCです。
CFileDialogを使ってファイルを指定して開くと、カレントディレクトリの位置が変化して、次回、CFileDialogで開くときは、その変化したあとの最新のディレクトリが開きますね。
このカレントディレクトリは、GetCurrentDirectory で、調べることができました。
しかし、特定のディレクトリ(フォルダ)をCFileDialogで開きたいとき、SetCurrentDirectory で設定しようとしても、これでは、CFileDialogで開くフォルダ位置を変更できません。
CFileDialogで開きたいフォルダ位置を変更するコマンドを教えてください。
DoModal()をする以前に設定したいので、CFileDialogクラスとは別の関数、できれば、SDKの関数等であれば、いいです。
No.2
- 回答日時:
lpstrInitialDir が指定できないならOSによって動作が変わります。
XPやVistaでしたらレジストリをいじることになると思います。
XPはHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU
Vistaは同\OpenSavePidlMRU
の各拡張子別にファイルを開くダイアログのファイル名のところで表示されるドロップダウンリストの項目が保存されています。
該当する拡張子でこれの一番上を開きたいディレクトリに変更すると出来るかもしれません(確認はしていません)。
98以前ならカレントディレクトリで設定できたかも
お返事ありがとうございました。
わたしの場合は、XPです。
ややこしいようですね。レジストリですか。
プログラムの普通の関数ではできない、ということですね。
(レジストリを触る専用関数は別にして)
CFileDialogで、DoModalをしてファイルを選択すると、そのあと、全く別のところでまた、新たなCFileDialogインスタンスを作ってDoModalをすると、前にファイル選択をしたディレクトリを憶えていて、そのディレクトリが開かれますが、これはCFileDialogの関数内でレジストリを触っているのでしょうか。
マイクロソフトは、ほんとレジストリなんてつまらんもんを作ったために、ほんとめんどくさいですよね。
レジストリは触ると怖いので、別の方法を模索したいと思います。
No.1ベストアンサー
- 回答日時:
CFileDialog のメンバにm_ofnというOPENFILENAME構造体があります
その中にさらにlpstrInitialDir というメンバ変数がありこれでイニシャルディレクトリが指定できます
----sample-----
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrInitialDir = TEXT("C:\\");
if (fileDlg.DoModal() == IDOK)
{
MessageBox(fileDlg.m_ofn.lpstrFile);;
}
お返事ありがとうございました。
ただ、ちょっと事情がありまして、
なんとか関数("C:\\");
というのをしてから、
CFileDialog fileDlg(TRUE);
if (fileDlg.DoModal() == IDOK)
{
...
}
としたいのです。
これができるなんとか関数を探しています。
この、なんとか関数は、fileDlgとは関係のない、SDK関数とか、CWindやCViewの関数とかです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Windows 10 エクスプローラーが開かなくなった? 1 2022/07/07 15:34
- Visual Basic(VBA) 複数ブックの統合について Excel VBA 1 2022/05/13 09:48
- Android(アンドロイド) QuickPik GalleryでSDカードの「root」のディレクトリが出てこない 3 2022/07/11 14:43
- Excel(エクセル) VBA 最新のフォルダ取得 1 2022/04/15 15:51
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
CString から LPCTSTRの型に変換
C言語・C++・C#
-
-
4
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
5
ラジオボタンのグループ化
C言語・C++・C#
-
6
CStringの文字列検索&抜き出しについて
C言語・C++・C#
-
7
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
8
CFileDialogを使用して、Pathを取得する方法
C言語・C++・C#
-
9
MFC ダイアログ上のID取得について
C言語・C++・C#
-
10
MFCでOnPaintのタイミング
C言語・C++・C#
-
11
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
12
「fatal error C1189」を回避するには?
C言語・C++・C#
-
13
CStringをwchar_tに変換したい
C言語・C++・C#
-
14
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
15
ボタンの配置を変更したい
C言語・C++・C#
-
16
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
17
CListCtrlで行の高さを指定したい。
C言語・C++・C#
-
18
リストコントロール(MFC or API)の最後尾にアイテムを追加するには?
C言語・C++・C#
-
19
MFCダイアログボックスを最前面に表示
C言語・C++・C#
-
20
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
現在位置より2つ上のディレク...
-
UWSCでファイルのアップロード...
-
【PHP】declare命令で”Fatal er...
-
aspのページが表示できません
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
[ ディレクトリ '.' は書き込み...
-
makefile でファイルをコピーす...
-
ファイル選択ダイアログで選択...
-
C言語でのディレクトリ作成につ...
-
visualstudioでc#のdllができない
-
頻繁にDBへアクセスするページ...
-
FTPコマンドでディレクトリごと...
-
フォントの色を変えるには?
-
PHPの設定で、 エラーが発生し...
-
onedrive にexcelファイルをア...
-
Linux:PHPでTELNETによるSMTP...
-
ListViewコントロールでサムネ...
-
ボタンのクリック数を合計保存...
-
ワードプレス、Contact Form 7...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
visualstudioでc#のdllができない
-
ファイルアップロードに関して...
-
現在位置より2つ上のディレク...
-
makefile でファイルをコピーす...
-
fopenでファイルが開かない場合...
-
rmdirでフォルダが消せません
-
絶対パス?絶対アドレス?意味...
-
VB.NET 最下位のディレクトリ名...
-
コマンドプロンプトを指定のデ...
-
VB2008でFTPでのディ...
-
DLL のロードの順序
-
MkDir関数
-
ファイル選択ダイアログで選択...
-
図に示す階層構造で,現在のデ...
-
[ ディレクトリ '.' は書き込み...
-
JAVA内で複数のファイルを削除...
おすすめ情報