CFileDialog クラス

ファイルを開く操作またはファイルの保存操作に使用する一般的なダイアログ ボックスをカプセル化します。

構文

class CFileDialog : public CCommonDialog

メンバー

パブリック コンストラクター

名前 説明
CFileDialog::CFileDialog CFileDialog オブジェクトを構築します。

パブリック メソッド

名前 説明
CFileDialog::AddCheckButton チェック ボタンをダイアログに追加します。
CFileDialog::AddComboBox ダイアログにコンボ ボックスを追加します。
CFileDialog::AddControlItem ダイアログでコンテナー コントロールに項目を追加します。
CFileDialog::AddEditBox ダイアログに編集ボックスを追加します。
CFileDialog::AddMenu ダイアログにメニューを追加します。
CFileDialog::AddPlace 過負荷です。 ユーザーがアイテムを開いたり保存したりするために使用できる場所の一覧にフォルダーを追加します。
CFileDialog::AddPushButton ダイアログにボタンを追加します。
CFileDialog::AddRadioButtonList オプション ボタン (ラジオ ボタンとも呼ばれます) グループをダイアログに追加します。
CFileDialog::AddSeparator ダイアログに区切り記号を追加します。
CFileDialog::AddText ダイアログにテキスト コンテンツを追加します。
CFileDialog::ApplyOFNToShellDialog メンバー変数に格納されているパラメーターとフラグに一致する状態CFileDialogm_ofn更新します。
CFileDialog::D oModal ダイアログ ボックスを表示し、ユーザーが選択できるようにします。
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 オブジェクトの OPENFILENAME 構造を CFileDialog 取得します。
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一致するように、メンバー変数に格納されているデータを更新します。

保護メソッド

名前 説明
CFileDialog::OnButtonClicked ボタンがクリックされたときに呼び出されます。
CFileDialog::OnCheckButtonToggled チェック ボックスがチェックまたはチェックされていないときに呼び出されます。
CFileDialog::OnControlActivating コントロールがアクティブな場合に呼び出されます。
CFileDialog::OnFileNameChange WM_NOTIFY CDN_Standard Edition LCHANGE メッセージを処理します。
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 メッセージを処理します。

パブリック データ メンバー

名前 説明
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」を参照してください

Note

コントロール ID システムは、Windows Vista 以降では、以前のバージョンの Windows CFileDialogと異なります。 以前のバージョンの Windows からプロジェクトを移植するには CFileDialog 、コード内のコントロールへのすべての参照を更新する必要があります。

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

クラスのウィンドウ メッセージは、 CFileDialog 使用しているオペレーティング システムによって異なります。 たとえば、Windows XP では、クラスの CDialog::OnCancelCDialog::OnOKCFileDialogサポートされていません。 ただし、Windows Vista 以降のオペレーティング システムではサポートされます。 生成されるさまざまなメッセージと受信順序の詳細については、「CFileDialog サンプル: イベント順序のログ記録」を参照してください

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

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

Note

Windows Vista 以降では、IFileDialog::SetFileTypes複数回呼び出すとエラーが発生します。 2 つ目の呼び出し SetFileTypes では、 CFileDialog Windows Vista 以降の任意のインスタンスに対してE_UNEXPECTEDが返されます。 いくつかの CFileDialog メソッド関数が呼び出されます SetFileTypes。 たとえば、同じインスタンスに対して CFileDialog::DoModal 2 回呼び出した場合、CFileDialogAS Standard Edition RT が生成されます

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

Windows CommDlgExtendedError 関数を使用すると、ダイアログ ボックスの初期化中にエラーが発生したかどうかを判断し、エラーの詳細を確認できます。

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

ユーザーが複数のファイルを選択できるようにするには、呼び出すDoModal前に OFN_ALLOWMULTIStandard Edition LECT フラグを設定します。 返される複数のファイル名の一覧に対応するには、独自のファイル名バッファーを指定する必要があります。 これを行うには、割り当てたバッファーへのポインターに置き換えます m_ofn.lpstrFile 。作成した後 CFileDialog、呼び出す DoModal前に.

さらに、指定するバッファー内の文字数を使用して設定 m_ofn.nMaxFile する m_ofn.lpstrFile必要があります。 選択 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::OnFileNameChange メソッドからCFileDialog新しいクラスを派生させ、オーバーライドする必要があります。

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

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

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

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

継承階層

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CFileDialog

必要条件

ヘッダー: afxdlgs.h

CFileDialog::AddCheckButton

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

HRESULT AddCheckButton(
    DWORD dwIDCtl,
    const CString& strLabel,
    BOOL bChecked);

パラメーター

dwIDCtl
追加するチェック ボタンの ID。

strLabel
チェック ボタンの名前。

bChecked
チェック ボタンの現在の状態を示すブール値。 チェック場合は TRUE。FAL Standard Editionそれ以外の場合

解説

CFileDialog::AddComboBox

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

HRESULT AddComboBox(DWORD dwIDCtl);

パラメーター

dwIDCtl
追加するコンボ ボックスの ID。

解説

CFileDialog::AddControlItem

ダイアログでコンテナー コントロールに項目を追加します。

HRESULT AddControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

パラメーター

dwIDCtl
項目を追加するコンテナー コントロールの ID。

dwIDItem
項目の ID。

strLabel
アイテムのテキスト。

解説

CFileDialog::AddEditBox

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

HRESULT AddEditBox(
    DWORD dwIDCtl,
    const CString& strText);

パラメーター

dwIDCtl
追加する編集ボックスの ID。

strText
編集ボックスの名前。

解説

CFileDialog::AddMenu

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

HRESULT AddMenu(
    DWORD dwIDCtl,
    const CString& strLabel);

パラメーター

dwIDCtl
追加するメニューの ID。

strLabel
メニュー名。

解説

CFileDialog::AddPlace

ユーザーがアイテムを開いたり保存したりするために使用できる場所の一覧にフォルダーを追加します。

void AddPlace(
    LPCWSTR lpszFolder,
    FDAP fdap = FDAP_TOP) throw();

void AddPlace(
    IShellItem* psi,
    FDAP fdap = FDAP_TOP) throw();

パラメーター

lpszFolder
ユーザーが使用できるようにするフォルダーへのパス。 フォルダーのみ指定できます。

fdap
フォルダーがリスト内のどこに配置されているかを指定します。

Psi
ユーザーが使用できるようにするフォルダーを表す IShellItem へのポインター。 フォルダーのみ指定できます。

解説

CFileDialog::AddPushButton

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

HRESULT AddPushButton(
    DWORD dwIDCtl,
    const CString& strLabel);

パラメーター

dwIDCtl
追加するボタンの ID。

strLabel
ボタン名。

解説

CFileDialog::AddRadioButtonList

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

HRESULT AddRadioButtonList(DWORD dwIDCtl);

パラメーター

dwIDCtl
追加するオプション ボタン グループの ID。

解説

CFileDialog::AddSeparator

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

HRESULT AddSeparator(DWORD dwIDCtl);

パラメーター

dwIDCtl
区切り記号の追加の ID。

解説

CFileDialog::AddText

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

HRESULT AddText(
    DWORD dwIDCtl,
    const CString& strText);

パラメーター

dwIDCtl
追加するテキストの ID。

strText
テキスト名。

解説

CFileDialog::ApplyOFNToShellDialog

の現在の状態を更新します。データ構造に格納されているm_ofn値に基づく CFileDialog

void ApplyOFNToShellDialog();

解説

Windows Vista より前のバージョンの Windows では、メンバー の OPENFILENAME データ構造が継続的に状態と CFileDialog同期されていました。 m_ofnメンバー変数への変更は、ダイアログ ボックスの状態にすぐに反映されました。 また、ダイアログ ボックスの状態を変更すると、メンバー変数が直ちに更新されます m_ofn

Windows Vista 以降では、メンバー変数の値 m_ofn と状態が CFileDialog 同期されるとは限りません。 この関数は、構造体に一致するように更新する状態 CFileDialog を強制します m_ofn 。 Windows は、CFileDialog::D oModalにこの関数を自動的に呼び出します。

Windows Vista 以降でCFileDialogクラスを使用する方法の詳細については、「CFileDialog クラス」を参照してください

CFileDialog::UpdateOFNFromShellDialog の例を参照してください。

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
[in]作成するダイアログ ボックスの種類を指定するパラメーター。 TRUE に設定すると、[ファイルを開く] ダイアログ ボックスが作成されます。 これを FAL Standard Edition に設定して、[名前を付けてファイルを保存] ダイアログ ボックスを作成します。

lpszDefExt
[in]既定のファイル名拡張子。 ファイル名ボックスに既知の拡張子 (ユーザーのコンピューターに関連付けがある拡張子) がユーザーに含まれていない場合、lpszDefExt指定された拡張子が自動的にファイル名に追加されます。 このパラメーターが NULL の場合、拡張子は追加されません。

lpszFileName
[in][ファイル名] ボックスに表示される初期ファイル名。 NULL の場合、初期ファイル名は表示されません。

dwFlags
[in]ダイアログ ボックスのカスタマイズに使用できる 1 つ以上のフラグの組み合わせ。 これらのフラグの説明については、Windows SDK の OPENFILENAME 構造体を参照してください。 構造体メンバーを変更する m_ofn.Flags 場合は、変更でビットごとの OR 演算子を使用して、既定の動作をそのまま維持します。

Lpszfilter
[in]ファイルに適用できるフィルターを指定する一連の文字列ペア。 ファイル フィルターを指定すると、フィルター条件に一致するファイルのみが [ファイル] リストに表示されます。 ファイル フィルターの使用方法の詳細については、「解説」セクションを参照してください。

pParentWnd
[in]ファイル ダイアログ ボックスの親ウィンドウまたは所有者ウィンドウへのポインター。

dwSize
[in]構造体の OPENFILENAME サイズ。 この値は、オペレーティング システムのバージョンによって異なります。 MFC は、このパラメーターを使用して、作成する適切な種類のダイアログ ボックスを決定しました。 既定のサイズが 0 の場合、MFC コードは、プログラムが実行されているオペレーティング システムのバージョンに基づいて、使用する正しいダイアログ ボックスのサイズを決定することを意味します。

bVistaStyle
[in] 注: このパラメーターは Visual Studio 2008 以降で使用でき、Windows Vista 以降で実行している場合にのみ新しいスタイルのダイアログが使用されます。

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

解説

bOpenFileDialog の値に応じて、[ファイルを開く] または [名前を付けて保存] ダイアログ ボックスが作成されます。

lpszDefExt を使用して既定の拡張機能を指定しても、ユーザーのコンピューターにファイルの関連付けがある拡張子が予測されることはめったにないため、期待する動作が生成されない場合があります。 既定の拡張機能の追加をより詳細に制御する必要がある場合は、独自のクラスを CFileDialog派生させ、メソッドを CFileDialog::OnFileNameOK オーバーライドして独自の拡張処理を実行できます。

ユーザーが複数のファイルを選択できるようにするには、DoModal を呼び出す前に OFN_ALLOWMULTIStandard Edition LECT フラグを設定します。 返される複数のファイル名の一覧を格納するには、独自のファイル名バッファーを指定する必要があります。 これを行うには、CFileDialog を構築した後、呼び出すDoModal前に、割り当てたバッファーへのポインターに置き換えますm_ofn.lpstrFile さらに、指定するバッファー内の文字数を設定 m_ofn.nMaxFile する m_ofn.lpstrFile必要があります。 選択するファイルの最大数を 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 では、このパラメーターは無視されます。 bVistaStyle が TRUE に設定されている場合、Visual Studio 2008 以降でプログラムをコンパイルするときに、新しい Vista スタイルのファイル ダイアログが使用されます。 それ以外の場合は、前の MFC スタイル のファイル ダイアログ が使用されます。

bVistaStyle に基づく ダイアログでは、ダイアログ テンプレートはサポートされていません

CFileDialog::D oModal の例を参照してください。

CFileDialog::D oModal

この関数を呼び出して、Windows の [共通ファイル] ダイアログ ボックスを表示し、ユーザーがファイルとディレクトリを参照し、ファイル名を入力できるようにします。

virtual INT_PTR DoModal();

戻り値

IDOK または IDCANCEL。 IDCANCEL が返された場合は、Windows CommDlgExtendedError 関数を呼び出して、エラーが発生したかどうかを判断します。

IDOK と IDCANCEL は、ユーザーが [OK] または [キャンセル] ボタンを選択したかどうかを示す定数です。

解説

構造体のメンバーを設定してさまざまなファイル ダイアログ ボックス オプションを m_ofn 初期化する場合は、これを呼び出す DoModal前に、ダイアログ オブジェクトが構築された後に行う必要があります。

たとえば、ユーザーが複数のファイルを選択できるようにする場合は、このトピックのコード例に示すように、呼び出すDoModal前に OFN_ALLOWMULTIStandard Edition LECT フラグを設定します。

ユーザーがダイアログ ボックスの [OK] または [キャンセル] ボタンをクリックするか、ダイアログ ボックスのコントロール メニューから [閉じる] オプションを選択すると、コントロールがアプリケーションに返されます。 その後、他のメンバー関数を呼び出して、ユーザーがダイアログ ボックスに入力した設定または情報を取得できます。

DoModal は、クラス CDialogからオーバーライドされた仮想関数です。

void CMyClass::OnFileOpen()
{
   // szFilters is a text string that includes two file name filters:
   // "*.my" for "MyType Files" and "*.*' for "All Files."
   TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");

   // Create an Open dialog; the default file name extension is ".my".
   CFileDialog fileDlg(TRUE, _T("my"), _T("*.my"),
      OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
   
   // Display the file dialog. When user clicks OK, fileDlg.DoModal() 
   // returns IDOK.
   if(fileDlg.DoModal() == IDOK)
   {
      CString pathName = fileDlg.GetPathName();
   
      // Implement opening and reading file in here.

      //Change the window's title to the opened file's title.
      CString fileName = fileDlg.GetFileTitle();
   
      SetWindowText(fileName);
   }
}

CFileDialog::EnableOpenDropDown

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

HRESULT EnableOpenDropDown(DWORD dwIDCtl);

パラメーター

dwIDCtl
ドロップダウン リストの ID。

解説

CFileDialog::EndVisualGroup

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

HRESULT EndVisualGroup();

戻り値

成功した場合はS_OKを返します。それ以外の場合はエラー値。

解説

CFileDialog::GetCheckButtonState

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

HRESULT GetCheckButtonState(
    DWORD dwIDCtl,
    BOOL& bChecked);

パラメーター

dwIDCtl
チェック ボックスの ID。

bChecked
チェック ボックスの状態。 TRUE はチェックを示します。FAL Standard Edition は未チェックを示します。

解説

CFileDialog::GetControlItemState

ダイアログで見つかったコンテナー コントロール内の項目の現在の状態を取得します。

HRESULT GetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF& dwState);

パラメーター

dwIDCtl
コンテナー コントロールの ID。

dwIDItem
項目の ID。

dwState
コントロールの現在の状態を示す CDCONTROLSTATE 列挙体からさらに 1 つの値を受け取る変数への参照。

解説

CFileDialog::GetControlState

特定のコントロールの現在の可視性と有効な状態を取得します。

HRESULT GetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF& dwState);

パラメーター

dwIDCtl
コントロールの ID。

dwState
コントロールの現在の状態を示す CDCONTROLSTATE 列挙体から 1 つ以上の値を受け取る変数への参照。

解説

CFileDialog::GetEditBoxText

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

HRESULT GetEditBoxText(
    DWORD dwIDCtl,
    CString& strText);

パラメーター

dwIDCtl
編集ボックスの ID。

strText
テキスト値。

解説

CFileDialog::GetFileExt

この関数を呼び出して、ダイアログ ボックスに入力されたファイル名の拡張子を取得します。

CString GetFileExt() const;

戻り値

ファイル名の拡張子。

解説

たとえば、入力したファイルの名前が DATA.TXT の場合は、 GetFileExt "TXT" を返します。

OFN_ALLOWMULTIStandard Edition LECT フラグが設定されている場合m_ofn.Flags、この文字列には null で終わる文字列のシーケンスが含まれます。最初の文字列は、ファイル グループのディレクトリ パスが選択され、その後にユーザーが選択したすべてのファイルの名前が続きます。 ファイル パス名を取得するには、GetStartPosition メンバー関数と GetNextPathName メンバー関数を使用します。

CFileDialog::GetFileName

この関数を呼び出して、ダイアログ ボックスに入力されたファイル名を取得します。

CString GetFileName() const;

戻り値

ファイルの名前。

解説

ファイルの名前には、プレフィックスと拡張子の両方が含まれます。 たとえば、 GetFileName "TEXT" を返します。ファイル C:\FILES\TEXT.DAT の DAT" です。

フラグが設定されているOFN_ALLOWMULTISELECT場合m_ofn.Flagsは、GetStartPositionGetNextPathName を呼び出してファイル パス名を取得する必要があります。

CFileDialog::GetFileTitle

この関数を呼び出して、ダイアログ ボックスに入力されたファイルのタイトルを取得します。

CString GetFileTitle() const;

戻り値

ファイルのタイトルです。

解説

ファイルのタイトルには、パスまたは拡張子のないプレフィックスのみが含まれます。 たとえば、 GetFileTitle C:\FILES\TEXT.DAT ファイルの "TEXT" を返します。

OFN_ALLOWMULTIStandard Edition LECT フラグが設定されている場合m_ofn.Flags、この文字列には null で終わる文字列のシーケンスが含まれます。最初の文字列は、ファイル グループのディレクトリ パスが選択され、その後にユーザーが選択したすべてのファイルの名前が続きます。 このため、GetStartPosition メンバー関数と GetNextPathName メンバー関数を使用して、リスト内の次のファイル名を取得します。

CFileDialog::D oModal の例を参照してください。

CFileDialog::GetFolderPath

このメンバー関数を呼び出して、エクスプローラー スタイルの [開く] または [名前を付けて保存] 共通ダイアログ ボックスの現在開いているフォルダーまたはディレクトリのパスを取得します。

CString GetFolderPath() const;

戻り値

現在開いているフォルダーまたはディレクトリを含む CString オブジェクト。

解説

ダイアログ ボックスは、OFN_EXPLORER スタイルで作成されている必要があります。それ以外の場合、メソッドはアサーションで失敗します。

このメソッドは、ダイアログ ボックスが表示されている間のみ呼び出すことができます。 ダイアログ ボックスが閉じられた後、この関数は機能しなくなり、アサーションでメソッドが失敗します。

CFileDialog::GetIFileDialogCustomize

特定 の CFileDialog の内部 COM オブジェクトへのポインターを取得します

IFileDialogCustomize* GetIFileDialogCustomize();

戻り値

の内部 COM オブジェクト CFileDialogへのポインター。 このポインターを適切に解放するのはユーザーの責任です。

解説

この関数は、Windows Vista 以降でのみ、bVistaStyle が TRUE に設定されているオブジェクトと共に使用します。 bVistaStyle が FAL Standard Edition のときにこの関数を使用すると、リリース モードで NULL が返され、デバッグ モードでアサーションがスローされます。

インターフェイスのIFileDialogCustomize詳細については、「IFileDialogCustomize」を参照してください

この例では、内部 COM オブジェクトを取得します。 このコード例を実行するには、Windows Vista 以降でコンパイルする必要があります。

// Get the interface pointer
IFileDialogCustomize *customDlgPtr = m_myFileDialogPtr->GetIFileDialogCustomize();

// Make sure that it is not null
if (customDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   customDlgPtr->Release();
}

CFileDialog::GetIFileOpenDialog

特定 CFileDialogのオブジェクトの内部 COM オブジェクトへのポインターを取得します。

IFileOpenDialog* GetIFileOpenDialog();

戻り値

の内部 COM オブジェクト CFileDialogへのポインター。 このポインターを適切に解放するのはユーザーの責任です。

解説

この関数は、Windows Vista 以降でのみ、bVistaStyle が TRUE に設定されているオブジェクトと共に使用します。 この関数は、[開く] ダイアログ ボックスではない場合CFileDialog、または bVistaStyle が FAL Standard Edition に設定されている場合に NULL を返します。 この最後のケースでは、関数はリリース モードでのみ NULL を返します。デバッグ モードではアサーションがスローされます。

インターフェイスの詳細IFileOpenDialogについては、「IFileOpenDialog」を参照してください

この例では、内部 COM オブジェクトを取得します。 このコードを実行するには、Windows Vista 以降でコンパイルする必要があります。

// Get the interface pointer
IFileOpenDialog * openDlgPtr = m_myFileDialogPtr->GetIFileOpenDialog();

// Make sure that it is not null
if ( openDlgPtr != NULL )
{
    //
    // Perform any interface functionality here
    //

    // Release the pointer
    openDlgPtr->Release();
}

CFileDialog::GetIFileSaveDialog

特定 CFileDialogのオブジェクトの内部 COM オブジェクトへのポインターを取得します。

IFileSaveDialog* GetIFileSaveDialog();

戻り値

の内部 COM オブジェクト CFileDialogへのポインター。 このポインターを適切に解放するのはユーザーの責任です。

解説

この関数は、Windows Vista 以降でのみ、bVistaStyle が TRUE に設定されているオブジェクトと共に使用します。 この関数は、保存ダイアログ ボックスではない場合CFileDialog、または bVistaStyle が FAL Standard Edition に設定されている場合に NULL を返します。 この最後のケースでは、関数はリリース モードでのみ NULL を返します。デバッグ モードではアサーションがスローされます。

インターフェイスの詳細IFileSaveDialogについては、「IFileSaveDialog」を参照してください

この例では、内部 COM オブジェクトを取得します。 このコード例を実行するには、Windows Vista 以降でコンパイルする必要があります。

// Get the interface pointer
IFileSaveDialog *saveDlgPtr = m_myFileDialogPtr->GetIFileSaveDialog();

// Make sure that it is not null
if (saveDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   saveDlgPtr->Release();
}

CFileDialog::GetNextPathName

この関数を呼び出して、ダイアログ ボックスで選択したグループから次のファイル名を取得します。

CString GetNextPathName(POSITION& pos) const;

パラメーター

pos
GetNextPathName の呼び出しまたは GetStartPosition 関数呼び出しによって返される POSITION 値への参照。 リストの末尾に達した場合は NULL。

戻り値

ファイルの完全パス名を返します。

解説

ファイル名のパスには、ファイルのタイトルとディレクトリ パス全体が含まれます。 たとえば、 GetNextPathName "C:\FILES\TEXT" を返します。ファイル C:\FILES\TEXT.DAT の DAT" です。 への呼び出しGetStartPositionで初期位置を確立する場合は、前方反復ループで使用GetNextPathNameできます。

選択範囲が 1 つのファイルのみで構成されている場合は、そのファイル名が返されます。

CFileDialog::GetOFN

関連付けられている OPENFILENAME 構造体を取得します。

const OPENFILENAME& GetOFN() const;

OPENFILENAME& GetOFN();

戻り値

OPENFILENAME 構造体。

解説

この関数の 2 番目のバージョンを使用して、構築された後、メンバー関数で表示される前に、[ファイルを開く] または [名前を付けて保存] ダイアログ ボックスの外観DoModal初期化します。 たとえば、ダイアログ ボックスにlpstrTitle含めるキャプションにメンバーm_ofnを設定できます。

CFileDialog::GetPathName

この関数を呼び出して、ダイアログ ボックスに入力されたファイルの完全なパスを取得します。

CString GetPathName() const;

戻り値

ファイルの完全パス名を返します。

解説

ファイル名のパスには、ファイルのタイトルとディレクトリ パス全体が含まれます。 たとえば、 GetPathName "C:\FILES\TEXT" を返します。ファイル C:\FILES\TEXT.DAT の DAT" です。

OFN_ALLOWMULTIStandard Edition LECT フラグが設定されている場合m_ofn.Flags、この文字列には null 型の文字列のシーケンスが含まれます。最初の文字列は、ファイル グループのディレクトリ パスが選択され、その後にユーザーが選択したすべてのファイルの名前が続きます。 このため、GetStartPosition メンバー関数と GetNextPathName メンバー関数を使用して、リスト内の次のファイル名を取得します。

CFileDialog::D oModal の例を参照してください。

CFileDialog::GetReadOnlyPref

この関数を呼び出して、Windows 標準の [ファイルを開く] ダイアログ ボックスと [名前を付けてファイルを保存] ダイアログ ボックスで [読み取り専用] チェック ボックスが選択されているかどうかを確認します。

BOOL GetReadOnlyPref() const;

戻り値

ダイアログ ボックスの [読み取り専用チェック] ボックスが選択されている場合は 0 以外、それ以外の場合は 0。

解説

コンストラクターでOFN_HIDEREADONLY スタイルを設定することで、[読み取り専用チェック] ボックスをCFileDialog非表示にすることができます。

Note

Windows Vista 以降のスタイル CFileDialog オブジェクトでは、この関数はサポートされていません。 Windows Vista 以降のスタイルCFileDialogでこの関数を使用しようとすると、CNotSupportedException がスローされます。

CFileDialog::GetResult

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

IShellItem* GetResult() throw();

戻り値

ユーザーの選択を表す IShellItem へのポインター。

解説

CFileDialog::GetResults

複数の選択を許可するダイアログでユーザーの選択肢を取得します。

IShellItemArray* GetResults() throw();

戻り値

ダイアログで選択した項目にアクセスできる IShellItemArray へのポインター。

解説

CFileDialog::GetSelectedControlItem

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

HRESULT GetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD& dwIDItem);

パラメーター

dwIDCtl
コンテナー コントロールの ID。

dwIDItem
ユーザーがコントロールで選択した項目の ID。

解説

CFileDialog::GetStartPosition

OFN_ALLOWMULTIStandard Edition LECT フラグが設定されている場合m_ofn.Flagsは、このメンバー関数を呼び出して、リスト内の最初のファイル パス名の位置を取得します。

POSITION GetStartPosition() const;

戻り値

反復に使用できる POSITION 値。リストが空の場合は NULL。

CFileDialog::HideControl

エクスプローラー スタイルの [開く] または [名前を付けて保存] 共通ダイアログ ボックスで指定したコントロールを非表示にするには、このメンバー関数を呼び出します。

void HideControl(int nID);

パラメーター

nID
非表示にするコントロールの ID。

解説

ダイアログ ボックスは、OFN_EXPLORER スタイルで作成されている必要があります。それ以外の場合、関数はアサーションで失敗します。

CFileDialog::IsPickFoldersMode

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

BOOL IsPickFoldersMode() const;

戻り値

ダイアログがフォルダー ピッカー モードの場合は TRUE。それ以外の場合は FAL Standard Edition。

解説

CFileDialog::m_ofn

m_ofn は型 OPENFILENAMEの構造です。 この構造体のデータは、 CFileDialog.

解説

この構造体を使用して、構築した後、DoModal メソッドを使用して表示する前に、[ファイルを開く] または [名前を付けて保存] ダイアログ ボックスの外観初期化します。 たとえば、lpstrTitle メンバーm_ofnダイアログ ボックスに含めるキャプションに設定できます。

Windows Vista 以降のスタイルの CFileDialog では、 m_ofn ダイアログ ボックスの状態と常に一致するとは限りません。 これは、以前のバージョンの Windows のダイアログ ボックスと同期されます。 Windows Vista 以降での構造と状態の同期m_ofnの詳細については、CFileDialog::ApplyOFNToShellDialogCFileDialog CFileDialog::UpdateOFNFromShellDialog を参照してください。

Windows Vista 以降のスタイル ファイル ダイアログでは、特定のメンバーとフラグを CFileDialogサポートしていません。 その結果、効果はありません。

Windows Vista 以降でサポートされていないメンバーの一覧を次に示します。

  • lpstrCustomFilter

  • lpstrInitialDir

  • lCustData

  • lpfnHook

  • lpTemplateName

次のフラグはサポートされていないため、Windows Vista 以降の CFileDialogスタイルを使用する場合は効果がありません。

  • OFN_ENABLEHOOK

  • OFN_ENABLEINCLUDENOTIFY

  • OFN_ENABLETEMPLATE

  • OFN_ENABLETEMPLATEHANDLE

  • Ofn_explorer

  • OFN_EXTENSIONDIFFERENT

  • OFN_HIDEREADONLY

  • OFN_LONGNAMES - Windows Vista 以降では実質的に常にオンになります

  • OFN_NOLONGNAMES - Windows Vista 以降では、実質的に常にオフになります

  • OFN_NONETWORKB (キロバイト)UTTON - Windows Vista 以降では実質的に常にオンになります

  • OFN_READONLY

  • OFN_SHOWHELP

この構造体の詳細については、Windows SDK の OPENFILENAME 構造体を参照してください。

CFileDialog::MakeProminent

他のコントロールと比較して目立つよう、ダイアログにコントロールを配置します。

HRESULT MakeProminent(DWORD dwIDCtl);

パラメーター

dwIDCtl
コントロールの ID。

解説

CFileDialog::OnButtonClicked

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

virtual void OnButtonClicked(DWORD dwIDCtl);

パラメーター

dwIDCtl
ボタンの ID。

解説

CFileDialog::OnCheckButtonToggled

チェック ボックスがチェックまたはチェックされていないときに呼び出されます。

virtual void OnCheckButtonToggled(
    DWORD dwIDCtl,
    BOOL bChecked);

パラメーター

dwIDCtl
チェック ボックスの ID。

bChecked
オンまたはオフチェック。

解説

CFileDialog::OnControlActivating

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

virtual void OnControlActivating(DWORD dwIDCtl);

パラメーター

dwIDCtl
コントロールの ID。

解説

CFileDialog::OnFileNameChange

WM_NOTIFY CDN_Standard Edition LCHANGE メッセージを処理する場合は、このメソッドをオーバーライドします。

virtual void OnFileNameChange();

解説

システムは、ユーザーが [開く] または [名前を付けて保存] ダイアログ ボックスのファイル一覧で新しいファイルまたはフォルダーを選択すると、CDN_Standard Edition LCHANGE メッセージを送信します。 このメッセージに応答してアクションを実行する場合は、このメソッドをオーバーライドします。

このメッセージは、OFN_EXPLORER フラグがオンになっているダイアログ ボックスが作成された場合にのみ送信されます。 通知の詳細については、「CDN_Standard Edition LCHANGE」を参照してください。 OFN_EXPLORER フラグの詳細については、「OPENFILENAME 構造体」および「名前を付けて開く」および「名前を付けて保存」ダイアログ ボックスを参照してください。

CFileDialog::OnFileNameOK

この関数は、共通のファイル ダイアログ ボックスに入力されたファイル名のカスタム検証を提供する場合にのみオーバーライドします。

virtual BOOL OnFileNameOK();

戻り値

ファイル名が有効なファイル名でない場合は 1。それ以外の場合は 0。

解説

この関数を使用すると、アプリケーション固有の理由でファイル名を拒否できます。 フレームワークはファイル名の既定の検証を提供し、無効なファイル名が入力された場合にメッセージ ボックスを表示するため、通常、この関数を使用する必要はありません。

1 が返された場合、ユーザーが別のファイル名を入力メインダイアログ ボックスが再表示されます。 ダイアログ プロシージャは、戻り値が 0 の場合、ダイアログを閉じます。 その他の 0 以外の戻り値は現在予約されており、使用しないでください。

CFileDialog::OnFolderChange

WM_NOTIFYCDN_FOLDERCHANGE メッセージを処理するには、この関数をオーバーライドします。

virtual void OnFolderChange();

解説

通知メッセージは、[開く] または [名前を付けて保存] ダイアログ ボックスで新しいフォルダーを開いたときに送信されます。

通知は、ダイアログ ボックスが OFN_EXPLORER スタイルで作成された場合にのみ送信されます。 通知の詳細については、「CDN_FOLDERCHANGE」を参照してください。 OFN_EXPLORER スタイルの詳細については、「OPENFILENAME 構造体」および「名前を付けて開く」および「名前を付けて保存」ダイアログ ボックスを参照してください。

CFileDialog::OnInitDone

WM_NOTIFY CDN_INITDONE メッセージを処理するには、この関数をオーバーライドします。

virtual void OnInitDone();

解説

システムは、[開く] または [名前を付けて保存] ダイアログ ボックスでコントロールの配置を完了し、子ダイアログ ボックスのコントロールのスペースを追加すると、この通知メッセージを送信します。

これは、ダイアログ ボックスが OFN_EXPLORER スタイルで作成された場合にのみ送信されます。 通知の詳細については、「CDN_INITDONE」を参照してください。 OFN_EXPLORER スタイルの詳細については、「OPENFILENAME 構造体」および「名前を付けて開く」および「名前を付けて保存」ダイアログ ボックスを参照してください。

Note

Windows Vista 以降のスタイル ファイル ダイアログでは、この関数はサポートされていません。 Windows Vista 以降のスタイル ファイル ダイアログでこの関数を使用しようとすると、CNotSupportedException がスローされます。

CFileDialog::OnItemSelected

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

virtual void OnItemSelected(
    DWORD dwIDCtl,
    DWORD dwIDItem);

パラメーター

dwIDCtl
コンテナー コントロールの ID。

dwIDItem
項目の ID。

解説

CFileDialog::OnLBSelChangedNotify

この関数は、リスト ボックス内の現在の選択範囲が変更されようとしているときに呼び出されます。

virtual void OnLBSelChangedNotify(
    UINT nIDBox,
    UINT iCurSel,
    UINT nCode);

パラメーター

nIDBox
選択が行われたリスト ボックスまたはコンボ ボックスの ID。

iCurSel
現在の選択範囲のインデックス。

nCode
コントロール通知コード。 このパラメーターには、次のいずれかの値が必要です。

  • CD_LBStandard Edition LCHANGE iCurSel は、単一選択リスト ボックスで選択した項目であることを指定します。

  • CD_LBStandard Edition LSUB 複数選択リスト ボックスで iCurSel が選択されなくなったことを指定します。

  • CD_LBStandard Edition LADD 複数選択リスト ボックスで iCurSel を選択することを指定します。

  • CD_LBStandard Edition LNOITEMS 複数選択リスト ボックスに選択が存在しないことを指定します。

解説

リスト ボックスで選択変更のカスタム処理を提供するには、この関数をオーバーライドします。 たとえば、この関数を使用して、ユーザーが選択した各ファイルのアクセス権または最終更新日を表示できます。

CFileDialog::OnShareViolation

共有違反のカスタム処理を提供するには、この関数をオーバーライドします。

virtual UINT OnShareViolation(LPCTSTR lpszPathName);

パラメーター

lpszPathName
共有違反が発生したファイルのパス。

戻り値

次のいずれかの値:

  • OFN_SHAREFALLTHROUGH ダイアログ ボックスからファイル名が返されます。

  • OFN_SHARENOWARN それ以上のアクションを実行する必要はありません。

  • OFN_SHAREWARN ユーザーは、このエラーに対する標準の警告メッセージを受け取ります。

解説

通常、フレームワークは共有違反の既定のチェックを提供し、共有違反が発生した場合にメッセージ ボックスを表示するため、この関数を使用する必要はありません。

共有違反のチェックを無効にする場合は、ビットごとの OR 演算子を使用してフラグOFN_SHAREAWAREをm_ofn.Flags組み合わせます。

CFileDialog::OnTypeChange

WM_NOTIFYCDN_TYPECHANGE メッセージを処理するには、この関数をオーバーライドします。

virtual void OnTypeChange();

解説

ユーザーが [開く] または [名前を付けて保存] ダイアログ ボックスのファイルの種類の一覧から新しいファイルの種類を選択すると、通知メッセージが送信されます。

通知は、ダイアログ ボックスが OFN_EXPLORER スタイルで作成された場合にのみ送信されます。 通知の詳細については、「CDN_TYPECHANGE」を参照してください。 OFN_EXPLORER スタイルの詳細については、「OPENFILENAME 構造体」および「名前を付けて開く」および「名前を付けて保存」ダイアログ ボックスを参照してください。

CFileDialog::RemoveControlItem

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

HRESULT RemoveControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

パラメーター

dwIDCtl
項目を削除するコンテナー コントロールの ID。

dwIDItem
項目の ID。

解説

CFileDialog::SetCheckButtonState

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

HRESULT SetCheckButtonState(
    DWORD dwIDCtl,
    BOOL bChecked);

パラメーター

dwIDCtl
チェック ボックスの ID。

bChecked
チェック ボックスの状態。 TRUE はチェックを示します。FAL Standard Edition は Unチェックed を示します。

解説

CFileDialog::SetControlItemState

ダイアログで見つかったコンテナー コントロール内の項目の現在の状態を設定します。

HRESULT SetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF dwState);

パラメーター

dwIDCtl
コンテナー コントロールの ID。

dwIDItem
項目の ID。

dwState
コントロールの新しい状態を示す CDCONTROLSTATE 列挙体の 1 つ以上の値。

解説

CFileDialog::SetControlItemText

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

HRESULT SetControlItemText(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

パラメーター

dwIDCtl
コンテナー コントロールの ID。

dwIDItem
項目の ID。

strLabel
アイテムのテキスト。

解説

CFileDialog::SetControlLabel

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

HRESULT SetControlLabel(
    DWORD dwIDCtl,
    const CString& strLabel);

パラメーター

dwIDCtl
コントロールの ID。

strLabel
コントロール名。

解説

CFileDialog::SetControlState

特定のコントロールの現在の可視性と有効な状態を設定します。

HRESULT SetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF dwState);

パラメーター

dwIDCtl
コントロールの ID。

dwState
コントロールの現在の状態を示す CDCONTROLSTATE 列挙体の 1 つ以上の値。

解説

CFileDialog::SetControlText

エクスプローラー スタイルの [名前を付けて開く] または [名前を付けて保存] ダイアログ ボックスで、指定したコントロールのテキストを設定するには、このメソッドを呼び出します。

void SetControlText(
    int nID,
    LPCSTR lpsz);

void SetControlText(
    int nID,
    const wchar_t *lpsz);

パラメーター

nID
[in]テキストを設定するコントロールの ID。

lpsz
[in]コントロールに設定するテキストを含む文字列へのポインター。

解説

この関数の両方のバージョンは、Unicode を使用するアプリケーションに対して有効です。 ただし、ANSI を使用するアプリケーションでは、LPCSTR 型のバージョンのみが有効です。

このメソッドを使用するには、OFN_EXPLORER スタイルを使用してダイアログ ボックスを作成する必要があります。 それ以外の場合、関数はアサーションで失敗します。

CFileDialog::SetDefExt

この関数を呼び出して、エクスプローラー スタイルの [開く] または [名前を付けて保存] ダイアログ ボックスの既定のファイル名拡張子を設定します。

void SetDefExt(LPCSTR lpsz);

パラメーター

lpsz
ダイアログ ボックス オブジェクトに使用する既定の拡張子を含む文字列へのポインター。 この文字列にはピリオド (.) を含めてはなりません。

解説

ダイアログ ボックスは、OFN_EXPLORER スタイルで作成されている必要があります。それ以外の場合、関数はアサーションで失敗します。

CFileDialog::SetEditBoxText

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

HRESULT SetEditBoxText(
    DWORD dwIDCtl,
    const CString& strText);

パラメーター

dwIDCtl
編集ボックスの ID。

strText
テキスト値。

解説

CFileDialog::SetProperties

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

BOOL SetProperties(LPCWSTR lpszPropList);

パラメーター

lpszPropList
";" で区切られた定義済みプロパティのリスト。 フラグの一覧については、OPENFILENAME「フラグ」セクションを参照してください。

解説

CFileDialog::SetSelectedControlItem

ダイアログで見つかったオプション ボタン グループまたはコンボ ボックス内の特定の項目の選択状態を設定します。

HRESULT SetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

パラメーター

dwIDCtl
コンテナー コントロールの ID。

dwIDItem
ユーザーがコントロールで選択した項目の ID。

解説

CFileDialog::SetTemplate

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

void SetTemplate(
    UINT nWin3ID,
    UINT nWin4ID);

void SetTemplate(
    LPCTSTR lpWin3ID,
    LPCTSTR lpWin4ID);

パラメーター

nWin3ID
[in]エクスプローラー以外のオブジェクトのテンプレート リソースの ID 番号をCFileDialog格納します。 このテンプレートは、Windows NT 3.51 または OFN_EXPLORER スタイルが存在しない場合にのみ使用されます。

nWin4ID
[in]エクスプローラー CFileDialog オブジェクトのテンプレート リソースの ID 番号を格納します。 このテンプレートは、Windows NT 4.0 以降のバージョン、Windows 95 以降のバージョン、またはOFN_EXPLORER スタイルが存在する場合にのみ使用されます。

lpWin3ID
[in]エクスプローラー以外のオブジェクトのテンプレート リソースの名前をCFileDialog格納します。 このテンプレートは、Windows NT 3.51 または OFN_EXPLORER スタイルが存在しない場合にのみ使用されます。

lpWin4ID
[in]エクスプローラー CFileDialog オブジェクトのテンプレート リソースの名前を格納します。 このテンプレートは、Windows NT 4.0 以降のバージョン、Windows 95 以降のバージョン、またはOFN_EXPLORER スタイルが存在する場合にのみ使用されます。

解説

システムは、指定されたテンプレートの 1 つだけを使用します。 システムは、OFN_EXPLORER スタイルの存在と、アプリケーションが実行されているオペレーティング システムに基づいて、使用するテンプレートを決定します。 エクスプローラー以外のテンプレートとエクスプローラースタイルのテンプレートの両方を指定することで、Windows NT 3.51、Windows NT 4.0 以降のバージョン、および Windows 95 以降のバージョンを簡単にサポートできます。

Note

Windows Vista 以降のスタイル ファイル ダイアログ ボックスでは、この機能はサポートされていません。 Windows Vista 以降のスタイル ファイル ダイアログ ボックスでこの関数を使用しようとすると、CNotSupportedException がスローされます。 別の方法として、カスタマイズされたダイアログを使用します。 カスタムCFileDialogの使用の詳細については、「IFileDialogCustomize」を参照してください

CFileDialog::StartVisualGroup

ダイアログでビジュアル グループを宣言します。 後続の "add" メソッドの呼び出しによって、これらの要素がこのグループに追加されます。

HRESULT StartVisualGroup(
    DWORD dwIDCtl,
    const CString& strLabel);

パラメーター

dwIDCtl
ビジュアル グループの ID。

strLabel
グループ名。

解説

CFileDialog::UpdateOFNFromShellDialog

内部オブジェクトのm_ofn現在の状態に基づいて、CFileDialog のデータ構造を更新します。

void UpdateOFNFromShellDialog();

解説

Windows Vista より前のバージョンの Windows では、メンバー の OPENFILENAME データ構造が継続的に状態と CFileDialog同期されていました。 m_ofn メンバー変数に対する変更は、ダイアログ ボックスの状態に直接影響を与えました。 また、ダイアログの状態を変更すると、m_ofnメンバー変数が直ちに更新されます。

Windows Vista 以降では、 m_ofn データ構造は自動的に更新されません。 メンバー変数内のデータの精度を保証するには、データに m_ofn アクセスする前に UpdateOFNFromShellDialog 関数を呼び出す必要があります。 Windows では、IFileDialog::OnFileOK処理中にこの関数が自動的に呼び出されます。

Windows Vista 以降でCFileDialogクラスを使用する方法の詳細については、「CFileDialog クラス」を参照してください

この例では、表示する前に CFileDialog 更新します。 メンバー変数を m_ofn 更新する前に、ダイアログ ボックスの現在の状態に同期する必要があります。

// Update the m_ofn variable
m_myFileDialogPtr->UpdateOFNFromShellDialog();

// Change the title
m_myFileDialogPtr->m_ofn.lpstrTitle = L"New Dialog Title";

// Apply the changes
m_myFileDialogPtr->ApplyOFNToShellDialog();

// Show the window
LRESULT result = m_myFileDialogPtr->DoModal();

関連項目

CCommonDialog クラス
階層図