更新 : 2010 年 7 月
ファイル操作用の標準の Windows ダイアログ ボックスを構築します。
explicit CFileDialog(
BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL,
DWORD dwSize = 0,
BOOL bVistaStyle = TRUE
);
パラメーター
[入力] bOpenFileDialog
作成するダイアログ ボックスの種類を指定するパラメーター。 [ファイルを開く] ダイアログ ボックスを構築するときは、TRUE に設定します。 [名前を付けて保存] ダイアログ ボックスを構築するときは、FALSE に設定します。[入力] lpszDefExt
既定のファイル名の拡張子。 ユーザーが [ファイル名] ボックスに拡張子を入力しなかった場合は、lpszDefExt で指定した拡張子が自動的にファイル名に追加されます。 このパラメーターに NULL を指定すると、拡張子は追加されません。[入力] lpszFileName
[ファイル名] ボックスに表示される初期ファイル名。 NULL を指定すると、初期ファイル名は何も表示されません。[入力] dwFlags
ダイアログ ボックスをカスタマイズするためのフラグの 1 つ以上組み合わせ。 これらのフラグについては、Windows SDK の OPENFILENAME 構造体の説明を参照してください。 m_ofn.Flags 構造体メンバーを変更する場合は、既定の動作を損なわないように、ビットごとの OR 演算子を使用してください。[入力] lpszFilter
ファイルを特定するためのフィルターを指定する文字列の組み合わせ。 フィルターを指定すると、フィルター条件に一致するファイルだけがファイルの一覧に表示されるようになります。 フィルターの使い方については、後の「解説」を参照してください。[入力] pParentWnd
ファイル操作用のダイアログ ボックスの親ウィンドウまたはオーナー ウィンドウへのポインター。[入力] dwSize
OPENFILENAME 構造体のサイズ。 この値はオペレーティング システムのバージョンによって異なります。 MFC では、このパラメーターを使用して、作成するダイアログ ボックスの種類を適切に判断します。たとえば、場合に応じて、NT4 のダイアログ ボックスの代わりに新しい Windows 2000 のダイアログ ボックスが作成されます。 既定のサイズ 0 の場合、MFC コードが、そのプログラムが実行されているオペレーティング システムのバージョンに基づいて正しいダイアログ ボックスのサイズを決定します。[入力] bVistaStyle
注このパラメーターは Visual Studio 2008 で利用できると後でありはのみを実行している場合に使用するには [新しいスタイル] ダイアログ ボックスがWindows Vistaまたはそれ以降。ファイル ダイアログのスタイルを指定するパラメーター。 新しい Vista スタイルのファイル ダイアログを使用するには、TRUE に設定します。 それ以外の場合は、以前の形式のダイアログ ボックスが使用されます。 詳細については「解説」セクションの下で Vista を実行して参照してください。
解説
bOpenFileDialog に指定した値に応じて、[ファイルを開く] ダイアログ ボックスか [名前を付けて保存] ダイアログ ボックスが構築されます。
ユーザーが複数のファイルを選択できるようにするには、DoModal を呼び出す前に OFN_ALLOWMULTISELECT フラグを設定します。 この場合、複数のファイル名のリストを格納できるようなバッファーを指定する必要があります。 これを行うには、CFileDialog を構築した後、DoModal を呼び出す前に、割り当てたバッファーを指すポインターを m_ofn.lpstrFile に設定します。 さらに、設定する必要がありますm_ofn.nMaxFileが指すバッファー内の文字数をm_ofn.lpstrFile。 選択するファイルの最大数を n に設定した場合、必要なバッファー サイズは n*(_MAX_PATH + 1) + 1 になります。 次に例を示します
CFileDialog dlgFile(TRUE);
CString fileName;
const int c_cMaxFiles = 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;
dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);
dlgFile.GetOFN().nMaxFile = c_cbBuffSize;
dlgFile.DoModal();
fileName.ReleaseBuffer();
ユーザーがマウスやキーボードを使用してエクスプローラー形式のダイアログ ボックスのサイズを変更できるようにするには、OFN_ENABLESIZING フラグを設定します。 このフラグを設定する必要があるのは、フック プロシージャまたはカスタム テンプレートを提供する場合だけです。 このフラグは、エクスプローラー形式のダイアログ ボックスにしか適用されません。このフラグを指定しても、以前の形式のダイアログ ボックスのサイズは変更できません。
lpszFilter パラメーターは、ファイルの一覧に表示されるファイルの種類を決定するために使用します。 文字列のペアのうち、最初の文字列はフィルターの説明を示し、2 番目の文字列は使用するファイル名拡張子を示します。 複数の拡張子を指定する場合は、セミコロン (';') を区切り文字として使います。 文字列の終わりには、2 つの '|' 文字と NULL 文字を追加します。 このパラメーターには、CString オブジェクトを使用することもできます。
たとえば、Microsoft Excel では、拡張子が .xlc (グラフ) または .xls (ワークシート) のファイルや、その他のファイルを開くことができます。 Excel 用のフィルターは次のように記述します。
static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
_T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
_T("*.xlc; *.xls|All Files (*.*)|*.*||");
ただし、この文字列を使用して OPENFILENAME 構造体を直接更新する場合は、文字列の区切り文字として、縦棒 ('|') ではなく null 文字 '\0' を使用する必要があります。
bVistaStyleパラメーターはのみ実行時Windows Vista。 以前のバージョンの Windows では、このパラメーターは無視されます。 場合bVistaStyleに設定されているTRUE、プログラムをコンパイルするとVisual Studio 2008またはそれ以降、新しい Vista スタイルファイル ダイアログが使用されます。 それ以外の場合は、以前の MFC スタイルのファイル ダイアログが使用されます。 詳細については、「CFileDialog クラス」を参照してください。
ダイアログ テンプレートに基づいてダイアログ サポートされません。bVistaStyle
使用例
CFileDialog::DoModal 関数の例を参照してください。
必要条件
Header: afxdlgs.h
参照
参照
その他の技術情報
履歴の変更
日付 |
History |
理由 |
---|---|---|
2010 年 7 月 |
「Vista の下で「Vista で実行中の「コンパイル」およびその他の説明したを変更します。 |
カスタマー フィードバック |