CFileDialog::CFileDialog
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 に配置します。[File Save As] のダイアログ ボックスを作成するには FALSE に配置します。[入力] lpszDefExt
既定のファイル名の拡張子です。ユーザーがファイル名]ボックスにユーザーのコンピューターの関連付けを持つ既知の拡張子 (1) を含める lpszDefExt、で指定された拡張子は、ファイル名に自動的に追加されます。このパラメーターがの場合、NULL拡張子は追加されません。[入力] lpszFileName
ファイル名]ボックスに表示される初期ファイル名。NULLが、最初のファイル名が表示されなくなります。[入力] dwFlags
一つ以上の組み合わせは、ダイアログ ボックスをカスタマイズするために使用できるフラグ。これらの詳細については Windows SDKの OPENFILENAME の構造を設定できるフラグ、" "を参照してください。m_ofn.Flags の構成要素を変更する場合は、既定の動作をそのまま保持するために、変更で、ビットごとの OR 演算子を使用します。[入力] lpszFilter
フィルターを指定する一連の文字列のペアは、ファイルに適用できます。ファイル フィルターを指定すると、フィルター条件に一致するファイルだけがファイルの一覧に表示されます。ファイル フィルターを使用する方法の詳細については、"解説"を参照してください。[入力] pParentWnd
ファイル ダイアログ ボックスの親ウィンドウまたはオーナー ウィンドウへのポインター。[入力] dwSize
OPENFILENAME の構造体のサイズ。この値には、オペレーティング システムのバージョンによって異なります。MFC (NT のダイアログ ボックスではなく Windows 2000 の新しいダイアログ ボックス) を作成する適切な種類のダイアログ ボックスを確認するには、このパラメーターを使用します。0 の既定のサイズは、MFC コードがプログラムを実行するオペレーティング システムのバージョンに基づいて使用する正しいダイアログ ボックスでサイズを決定することを意味します。[入力] bVistaStyle
メモ は、このパラメーター Windows Vista 以降で実行する場合のみ Visual Studio 2008 で使用できる以降で使用して、新しいスタイルのプロンプトがあります。ファイル ダイアログのスタイルを指定するパラメーター。新しい Vista のスタイル ファイル ダイアログを使用するには TRUE に配置します。それ以外の場合は、ダイアログ ボックスの旧形式が使用されます。Vista で実行する方法の詳細については、"解説"を参照してください。
解説
[ファイルを開く] か [File Save As] ]ダイアログ ボックスが bOpenFileDialogの値によって構築できます。
lpszDefExt を使用して既定の拡張子を指定することによって拡張子をユーザーのコンピューターのファイルの関連付けをほとんど予測できないため、意図した動作を生成しない場合があります。既定の拡張機能の追加の詳細に制御する必要がある場合、CFileDialogから独自のクラスを派生し、独自の拡張機能の処理を実行するには、CFileDialog::OnFileNameOK のメソッドをオーバーライドします。
DoModalを呼び出す前にユーザーが複数のファイルを選択できるようにするには OFN_ALLOWMULTISELECT フラグを設定します。複数のファイル名のリストを格納するための独自のファイル名のバッファーを指定する必要があります。独自に割り当てたバッファーへのポインターを m_ofn.lpstrFile を置き換えることによってこれを CFileDialogを構築した後、DoModalを呼び出す前に、します。また、m_ofn.lpstrFileが指すバッファーの文字数を持つ m_ofn.nMaxFile を設定する必要があります。セット nに選択するファイルの最大数必要なバッファー サイズ n場合 (* _MAX_PATH + 1) + 1。次に例を示します。
#define MAX_CFileDialog_FILE_COUNT 99
#define FILE_LIST_BUFFER_SIZE ((MAX_CFileDialog_FILE_COUNT * (MAX_PATH + 1)) + 1)
CString fileName;
wchar_t* p = fileName.GetBuffer( FILE_LIST_BUFFER_SIZE );
CFileDialog dlgFile(TRUE);
OPENFILENAME& ofn = dlgFile.GetOFN( );
ofn.Flags |= OFN_ALLOWMULTISELECT;
ofn.lpstrFile = p;
ofn.nMaxFile = FILE_LIST_BUFFER_SIZE;
dlgFile.DoModal();
fileName.ReleaseBuffer();
wchar_t* pBufEnd = p + FILE_LIST_BUFFER_SIZE - 2;
wchar_t* start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
{
_tprintf(_T("Path to folder where files were selected: %s\r\n\r\n"), start );
p++;
int fileCount = 1;
while( ( p < pBufEnd ) && ( *p ) )
{
start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
_tprintf(_T("%2d. %s\r\n"), fileCount, start );
p++;
fileCount++;
}
}
にユーザーがマウスまたはキーボードを使用してエクスプローラー スタイルのダイアログ ボックスのサイズを変更できるようにするには 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 では、このパラメーターは無視されます。bVistaStyleTRUEがに設定されている場合、Visual Studio 2008 以降のプログラムをコンパイルするときに、Vista の新しいスタイル [File Dialog] が使用されます。それ以外の場合は、前の MFC スタイル [File Dialog] が使用されます。詳細については、「CFileDialog クラス」を参照してください。
ダイアログ テンプレートは bVistaStyleに基づいて、ダイアログではサポートされていません
使用例
CFileDialog::DoModal 関数の例を参照してください。
必要条件
Header:afxdlgs.h