
Visual C++のMFCです。
CFileDialogを使ってファイルを指定して開くと、カレントディレクトリの位置が変化して、次回、CFileDialogで開くときは、その変化したあとの最新のディレクトリが開きますね。
このカレントディレクトリは、GetCurrentDirectory で、調べることができました。
しかし、特定のディレクトリ(フォルダ)をCFileDialogで開きたいとき、SetCurrentDirectory で設定しようとしても、これでは、CFileDialogで開くフォルダ位置を変更できません。
CFileDialogで開きたいフォルダ位置を変更するコマンドを教えてください。
DoModal()をする以前に設定したいので、CFileDialogクラスとは別の関数、できれば、SDKの関数等であれば、いいです。
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の関数とかです。
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の関数内でレジストリを触っているのでしょうか。
マイクロソフトは、ほんとレジストリなんてつまらんもんを作ったために、ほんとめんどくさいですよね。
レジストリは触ると怖いので、別の方法を模索したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
-
4
CStringの文字列検索&抜き出しについて
C言語・C++・C#
-
5
CEdit の内容が変わった時にメッセージを表示させたい
C言語・C++・C#
-
6
CFileDialogでフォルダだけを選択させる
C言語・C++・C#
-
7
MFC CFileDialog
C言語・C++・C#
-
8
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
9
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
10
ラジオボタンのグループ化
C言語・C++・C#
-
11
デフォルトでのファイルオープン場所の指定
C言語・C++・C#
-
12
エディットボックスの入力制限について
C言語・C++・C#
-
13
CString から LPCTSTRの型に変換
C言語・C++・C#
-
14
エディットボックスのフォントを変えたい
C言語・C++・C#
-
15
最大化と最小化ボタン
C言語・C++・C#
-
16
リストビューの選択状態を取得するメッセージはありますか?
C言語・C++・C#
-
17
リストコントロールのデータの変更を検知したい
C言語・C++・C#
-
18
ラベル(スタティックテキスト)内での改行。
C言語・C++・C#
-
19
SetWindowText関数について
C言語・C++・C#
-
20
コンボボックス表示文字列を取得する場合
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CFileDialogの最初のディレクト...
-
現在位置より2つ上のディレク...
-
Subversionのリポジトリの削除
-
makefile でファイルをコピーす...
-
rmdirでフォルダが消せません
-
ファイル選択ダイアログで選択...
-
バッチを用いたフォルダの自動移動
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
*.php、*.php3、*.phtmlの違い
-
.phpと.incファイルの違いはな...
-
require_once()でファイルが読...
-
ImageCreate関数が undefined f...
-
php4とphp5での数値の取り扱い...
-
Prompt入力値をphp変数として取...
-
header(Location:~)で$_SESS...
-
シェルスクリプトをPHPで動かそ...
-
HPを開くとダウンロードページ...
-
phpのextension_dirを複数指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
makefile でファイルをコピーす...
-
rmdirでフォルダが消せません
-
visualstudioでc#のdllができない
-
Visual C++ 2005 Express Editi...
-
ロケットBBSについて
-
phpのftp_putについて
-
現在位置より2つ上のディレク...
-
define でのルートディレクト...
-
ハッスルサーバーで海外からWP...
-
VB.NET 最下位のディレクトリ名...
-
絶対パス?絶対アドレス?意味...
-
レンタルサーバーでPDF出力
-
MkDir関数
-
図に示す階層構造で,現在のデ...
-
【BAT(バッチ)ファイル】Web...
-
http://localhost/に.htaccess...
おすすめ情報