次の方法で共有


CFileDialog クラス

ファイルを開く操作または保存する操作に使用されるコモン ダイアログ ボックスをカプセル化します。

class CFileDialog : public CCommonDialog

メンバー

dk77e5e7.collapse_all(ja-jp,VS.110).gifパブリック コンストラクター

名前

説明

CFileDialog::CFileDialog

CFileDialog オブジェクトを構築します。

dk77e5e7.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CFileDialog::AddCheckButton

ダイアログにチェック ボタンを追加します。

CFileDialog::AddComboBox

ダイアログにコンボ ボックスを追加します。

CFileDialog::AddControlItem

ダイアログ ボックスのコンテナー コントロールに項目を追加します。

CFileDialog::AddEditBox

ダイアログ ボックスにエディット ボックスを追加します。

CFileDialog::AddMenu

ダイアログにメニューを追加します。

CFileDialog::AddPlace

オーバーロードされます。ユーザーが項目を開いたり保存したりするために使用できる場所の一覧に、フォルダーを追加します。

CFileDialog::AddPushButton

ダイアログにボタンを追加します。

CFileDialog::AddRadioButtonList

オプション ボタン (ラジオ ボタンとも呼びます) のグループをダイアログ ボックスに追加します。

CFileDialog::AddSeparator

ダイアログに区切り記号を追加します。

CFileDialog::AddText

ダイアログにテキスト コンテンツを追加します。

CFileDialog::ApplyOFNToShellDialog

m_ofn メンバー変数に格納されているパラメーターとフラグに合わせて、CFileDialog を更新します。

CFileDialog::DoModal

ダイアログ ボックスを表示し、ユーザーが選択を行えるようにします。

CFileDialog::EnableOpenDropDown

ダイアログの [開く] または [保存] のボタンのドロップダウン リストを有効にします。

CFileDialog::EndVisualGroup

ダイアログのビジュアル グループに対する要素の追加を停止します。

CFileDialog::GetCheckButtonState

ダイアログのチェック ボタン (チェック ボックス) の現在の状態を取得します。

CFileDialog::GetControlItemState

ダイアログのコンテナー コントロール内にある項目の現在の状態を取得します。

CFileDialog::GetControlState

指定されたコントロールの現在の表示状態および有効状態を取得します。

CFileDialog::GetEditBoxText

エディット ボックス コントロールの現在のテキストを取得します。

CFileDialog::GetFileExt

選択されたファイルの拡張子を返します。

CFileDialog::GetFileName

選択されたファイルの名前を返します。

CFileDialog::GetFileTitle

選択されたファイルのタイトルを返します。

CFileDialog::GetFolderPath

エクスプローラー形式の [ファイルを開く] または [ファイル名を付けて保存] コモン ダイアログ ボックスで現在開かれているフォルダーまたはディレクトリのパスを取得します。

CFileDialog::GetIFileDialogCustomize

カスタマイズされた CFileDialog オブジェクトに対応する内部 COM オブジェクトを取得します。

CFileDialog::GetIFileOpenDialog

[ファイルを開く] ダイアログ ボックスとして使用されている CFileDialog に対応する内部 COM オブジェクトを取得します。

CFileDialog::GetIFileSaveDialog

[ファイル名を付けて保存] ダイアログ ボックスとして使用されている CFileDialog に対応する内部 COM オブジェクトを取得します。

CFileDialog::GetNextPathName

選択されている次のファイルの完全パス名を返します。

CFileDialog::GetOFN

CFileDialog オブジェクトの OPENFILENAME 構造体を取得します。

CFileDialog::GetPathName

選択されたファイルの完全パス名を返します。

CFileDialog::GetReadOnlyPref

選択されたファイルが読み取り専用かどうかを返します。

CFileDialog::GetResult

ダイアログでユーザーが選択した内容を取得します。

CFileDialog::GetResults

複数選択が可能なダイアログでユーザーが選択した内容を取得します。

CFileDialog::GetSelectedControlItem

ダイアログ内の指定されたコンテナー コントロールから特定の項目を取得します。

CFileDialog::GetStartPosition

ファイル名リストの最初の要素の位置を返します。

CFileDialog::HideControl

エクスプローラー形式の [ファイルを開く] または [ファイル名を付けて保存] コモン ダイアログ ボックスの指定コントロールを非表示にします。

CFileDialog::IsPickFoldersMode

現在のダイアログ ボックスがフォルダー ピッカー モードかどうかを判断します。

CFileDialog::MakeProminent

他の追加されたコントロールに比べて目立つように、コントロールをダイアログに配置します。

CFileDialog::RemoveControlItem

ダイアログのコンテナー コントロールから項目を削除します。

CFileDialog::SetCheckButtonState

ダイアログ内のチェック ボタン (チェック ボックス) の現在の状態を設定します。

CFileDialog::SetControlItemState

ダイアログのコンテナー コントロール内にある項目の現在の状態を設定します。

CFileDialog::SetControlItemText

コントロール項目のテキストを設定します。たとえば、オプション ボタンやメニュー内の項目に付随するテキストです。

CFileDialog::SetControlLabel

ボタンのテキストやエディット ボックスのラベルなどのコントロールに関連付けられているテキストを設定します。

CFileDialog::SetControlState

指定されたコントロールの現在の表示状態および有効状態を設定します。

CFileDialog::SetControlText

エクスプローラー形式の [ファイルを開く] または [ファイル名を付けて保存] コモン ダイアログ ボックスの指定コントロールに表示するテキストを設定します。

CFileDialog::SetDefExt

エクスプローラー形式の [ファイルを開く] または [ファイル名を付けて保存] コモン ダイアログ ボックスで既定で使用するファイル拡張子を設定します。

CFileDialog::SetEditBoxText

エディット ボックス コントロールの現在のテキストを設定します。

CFileDialog::SetProperties

保存する項目に対して使用される既定値を定義するプロパティ ストアを提供します。

CFileDialog::SetSelectedControlItem

ダイアログにあるオプション ボタン グループまたはコンボ ボックスの特定の項目の選択状態を設定します。

CFileDialog::SetTemplate

CFileDialog オブジェクトのダイアログ ボックス テンプレートを設定します。

CFileDialog::StartVisualGroup

ダイアログ内のビジュアル グループを宣言します。以降に "add" メソッドを呼び出すことで、それらの要素をこのグループに追加します。

CFileDialog::UpdateOFNFromShellDialog

ファイル ダイアログ ボックスの現在の状態に合わせて、m_ofn メンバー変数に格納されているデータを更新します。

dk77e5e7.collapse_all(ja-jp,VS.110).gifプロテクト メソッド

名前

説明

CFileDialog::OnButtonClicked

ボタンがクリックされたときに呼び出されます。

CFileDialog::OnCheckButtonToggled

チェック ボックスがオンまたはオフにされたときに呼び出されます。

CFileDialog::OnControlActivating

コントロールがアクティブになるときに呼び出されます。

CFileDialog::OnFileNameChange

WM_NOTIFY CDN_SELCHANGE メッセージを処理します。

CFileDialog::OnFileNameOK

ダイアログ ボックスに入力されたファイル名を検証します。

CFileDialog::OnFolderChange

WM_NOTIFY CDN_FOLDERCHANGE メッセージを処理します。

CFileDialog::OnInitDone

WM_NOTIFY CDN_INITDONE メッセージを処理します。

CFileDialog::OnItemSelected

コンテナー項目が選択されたときに呼び出されます。

CFileDialog::OnLBSelChangedNotify

ファイルの選択が変更されたときにカスタム アクションを実行できます。

CFileDialog::OnShareViolation

共有違反を処理します。

CFileDialog::OnTypeChange

WM_NOTIFY CDN_TYPECHANGE メッセージを処理します。

dk77e5e7.collapse_all(ja-jp,VS.110).gifパブリック データ メンバー

名前

説明

CFileDialog::m_ofn

Windows の OPENFILENAME 構造体です。ファイル操作用のダイアログ ボックスの基本パラメーターにアクセスできるようにします。

解説

コモン ダイアログ ボックスを使用すると、[ファイルを開く][名前を付けて保存] などのファイルの選択ダイアログ ボックスを、Windows の標準に沿った方法で実装できます。

用意されているコンストラクターでそのまま CFileDialog を使用することも、CFileDialog から独自のダイアログ ボックス クラスを派生させて、要件に応じたコンストラクターを記述することもできます。どちらの場合も、これらのダイアログ ボックスは CCommonDialog クラスから派生しているため、標準の MFC のダイアログ ボックスと同様の動作をします。CFileDialog は、Windows に含まれている COMMDLG.DLL ファイルを使用します。

Windows Vista の CFileDialog の外観と機能は、以前のバージョンの Windows から変更されています。既定の CFileDialog は、コードを変更しなくても、プログラムが Windows Vista でコンパイルおよび実行されると、自動的に新しい Windows Vista スタイルを使用するようになっています。この自動更新機能を手動でオーバーライドする場合は、コンストラクターで bVistaStyle パラメーターを使用します。この自動更新機能が適用されないのは、カスタマイズしたダイアログ ボックスです。カスタマイズしたダイアログ ボックスは、新しいスタイルに変換されません。コンストラクターの詳細については、「CFileDialog::CFileDialog」を参照してください。

[!メモ]

Windows Vista では、CFileDialog を使用する場合のコントロール ID のシステムが以前のバージョンの Windows から変更されています。以前のバージョンの Windows からプロジェクトを移植するには、CFileDialog コントロールへのすべての参照をまず更新する必要があります。

CFileDialog のいくつかのメソッドは、Windows Vista ではサポートされません。メソッドがサポートされるかどうかについては、それぞれのメソッドのトピックを参照してください。さらに、Windows Vista では、以下の継承された関数はサポートされません。

CFileDialog クラスのウィンドウ メッセージは、使用しているオペレーティング システムによって異なります。たとえば、Windows XP では、CFileDialog クラスに対して CDialog::OnCancelCDialog::OnOK はサポートされません。 一方、Windows Vista ではこれらがサポートされます。とそれぞれ異なる順序生成されるメッセージの詳細については、CFileDialogサンプル: ログのEventの順序を参照してください。

CFileDialog オブジェクトを使うには、まず CFileDialog コンストラクターを使ってオブジェクトを作成します。ダイアログ ボックスが構築されたら、CFileDialog::m_ofn 構造体の値を設定または変更して、ダイアログ ボックスのコントロールの値や状態を初期化できます。m_ofn 構造体の型は、OPENFILENAME です。詳細については、Windows SDK の OPENFILENAME 構造体を参照してください。

ダイアログ ボックスのコントロールを初期化したら、ユーザーがパスとファイル名を入力できるように、CFileDialog::DoModal メソッドを呼び出してダイアログ ボックスを表示します。DoModal は、ユーザーが [OK] (IDOK) ボタンと [キャンセル] (IDCANCEL) ボタンのどちらをクリックしたかを返します。DoModal が IDOK を返したときは、CFileDialog のパブリック メンバー関数を使用して、入力された情報を取得できます。

[!メモ]

Windows Vista では、IFileDialog::SetFileTypes を複数回呼び出すとエラーが発生します。Windows Vista では、CFileDialog のどのインスタンスでも、SetFileTypes の 2 回目の呼び出しからは E_UNEXPECTED が返されます。CFileDialog の一部のメソッド関数は、SetFileTypes を呼び出します。たとえば、CFileDialog の同じインスタンスで CFileDialog::DoModal を 2 回呼び出すと、ASSERT が生成されます。

CFileDialog には、共有違反、ファイル名の検証、およびリスト ボックスの変更通知に対してカスタム処理を実行できる、いくつかのプロテクト メンバーが含まれています。これらのプロテクト メンバーはコールバック関数ですが、通常は既定の処理が自動的に実行されるため、ほとんどのアプリケーションでは使用する必要がありません。これらは標準の仮想関数なので、これらの関数に対するメッセージ マップ エントリも必要ありません。

Windows の CommDlgExtendedError 関数を使用すると、ダイアログ ボックスの初期化中にエラーが発生したかどうかを確認し、そのエラーについての情報を取得できます。

CFileDialog オブジェクトの破棄は自動的に処理されます。CDialog::EndDialog を呼び出す必要はありません。

ユーザーが複数のファイルを選択できるようにするには、DoModal を呼び出す前に OFN_ALLOWMULTISELECT フラグを設定します。この場合、複数のファイル名のリストを格納できるバッファーを指定する必要があります。そのためには、CFileDialog を構築した後、DoModal を呼び出す前に、独自に割り当てたバッファーへのポインターを m_ofn.lpstrFile に設定します。

また、m_ofn.lpstrFileが指すバッファーの文字数を使用して m_ofn.nMaxFile を設定する必要があります。選択するファイルの最大数を n に設定するとしたら、必要なバッファー サイズは n * (_MAX_PATH + 1) + 1 になります。バッファーに返される最初の項目は、ファイルが選択したフォルダーのパスです。Windows Vistaの式のダイアログ ボックスでは、ディレクトリ、およびファイル名の文字列は、最後のファイル名後に追加のnull文字が、nullで終わります。この形式は空間を含む長いファイル名を返すことをエクスプローラー スタイルのダイアログ ボックスが表示されます。旧式のダイアログ ボックスでは、ディレクトリ、およびファイル名の文字列が空白で区切られて、関数は空白とファイル名には短いファイル名を使用します。

次の例は、複数のファイル名を取得し、一覧にバッファーを使用する方法を示します。

#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++;
  }
}

ユーザーが複数のファイル名を選択するのに応じてバッファー サイズを変更するには、CFileDialog から新しいクラスを派生させ、CFileDialog::OnFileNameChange メソッドをオーバーライドする必要があります。

CFileDialog から新しいクラスを派生するとき、メッセージ マップを使用してメッセージを処理できます。既定のメッセージ処理を拡張するには、CFileDialog から派生クラスを作成し、そのクラスにメッセージ マップを追加し、新しいメッセージを処理するためのメンバー関数を用意します。ダイアログ ボックスをカスタマイズするために、フック関数を用意する必要はありません。

ダイアログ ボックスをカスタマイズするには、CFileDialog からクラスを派生させ、独自のダイアログ ボックス テンプレートを作成します。さらに、拡張コントロールからの通知メッセージを処理するメッセージ マップを追加します。処理されないメッセージは基本クラスに渡します。フック関数をカスタマイズする必要はありません。

Windows Vista スタイルの CFileDialog を使用する場合、メッセージ マップとダイアログ ボックス テンプレートは使用できません。代わりに、同様の機能を持つ COM インターフェイスを使用する必要があります。

CFileDialog の使用方法の詳細については、「コモン ダイアログ クラス」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFileDialog

必要条件

**ヘッダー:**afxdlgs.h

参照

関連項目

CCommonDialog クラス

階層図