Share via


CFileDialog::CFileDialog

更新 : 2007 年 11 月

ファイル操作用の標準の 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
    メモ   このパラメータを適用できるのは、Windows Vista でコンパイルを行う場合だけです。

    ファイル ダイアログのスタイルを指定するパラメータ。新しい Vista スタイルのファイル ダイアログを使用するには、TRUE に設定します。それ以外の場合は、以前の形式のダイアログ ボックスが使用されます。Vista でのコンパイルの詳細については、「解説」を参照してください。

解説

bOpenFileDialog に指定した値に応じて、[ファイルを開く] ダイアログ ボックスか [名前を付けて保存] ダイアログ ボックスが構築されます。

ユーザーが複数のファイルを選択できるようにするには、DoModal を呼び出す前に OFN_ALLOWMULTISELECT フラグを設定します。この場合、複数のファイル名のリストを格納できるようなバッファを指定する必要があります。これを行うには、CFileDialog を構築した後、DoModal を呼び出す前に、割り当てたバッファを指すポインタを m_ofn.lpstrFile に設定します。さらに、m_ofn.lpstrFile が指すバッファの文字数を m_ofn.nMaxFile に設定する必要があります。選択するファイルの最大数を 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_cMaxFiles;

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 に設定し、Windows Vista でプログラムをコンパイルすると、新しい Vista スタイルのファイル ダイアログが使用されます。それ以外の場合は、以前の MFC スタイルのファイル ダイアログが使用されます。このように、現在のプロジェクトを Windows Vista 環境で再コンパイルすると、新しい Vista ダイアログ ボックスを利用できるようになります。詳細については、「CFileDialog クラス」を参照してください。

使用例

CFileDialog::DoModal 関数の例を参照してください。

必要条件

Header: afxdlgs.h

参照

参照

CFileDialog クラス

階層図

CFileDialog::DoModal

GetOpenFileName

GetSaveFileName

OPENFILENAME

その他の技術情報

CFileDialog のメンバ