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 m_ofn メンバー変数に格納されているパラメーターとフラグと一致するように、CFileDialogの状態を更新します。
CFileDialog::D oModal ダイアログ ボックスを表示し、ユーザーが選択できるようにします。
CFileDialog::EnableOpenDropDown ダイアログの Open または Save ボタンのドロップダウン リストを有効にします。
CFileDialog::EndVisualGroup ダイアログ内のビジュアル グループへの要素の追加を停止します。
CFileDialog::GetCheckButtonState ダイアログのチェック ボタン (チェック ボックス) の現在の状態を取得します。
CFileDialog::GetControlItemState ダイアログで見つかったコンテナー コントロール内の項目の現在の状態を取得します。
CFileDialog::GetControlState 特定のコントロールの現在の可視性と有効な状態を取得します。
CFileDialog::GetEditBoxText 編集ボックス コントロールの現在のテキストを取得します。
CFileDialog::GetFileExt 選択したファイルの拡張子を返します。
CFileDialog::GetFileName 選択したファイルのファイル名を返します。
CFileDialog::GetFileTitle 選択したファイルのタイトルを返します。
CFileDialog::GetFolderPath エクスプローラー スタイルの Open または 名前を付けて保存] ダイアログ ボックスの現在開いているフォルダーまたはディレクトリ パスを取得します。
CFileDialog::GetIFileDialogCustomize カスタマイズされた CFileDialog オブジェクトの内部 COM オブジェクトを取得します。
CFileDialog::GetIFileOpenDialog Open ファイル ダイアログ ボックスとして使用されるCFileDialogの内部 COM オブジェクトを取得します。
CFileDialog::GetIFileSaveDialog Save ファイル ダイアログ ボックスとして使用されるCFileDialogの内部 COM オブジェクトを取得します。
CFileDialog::GetNextPathName 次に選択したファイルの完全パスを返します。
CFileDialog::GetOFN CFileDialog オブジェクトのOPENFILENAME構造体を取得します。
CFileDialog::GetPathName 選択したファイルの完全なパスを返します。
CFileDialog::GetReadOnlyPref 選択したファイルの読み取り専用の状態を返します。
CFileDialog::GetResult ダイアログでユーザーが行った選択を取得します。
CFileDialog::GetResults 複数の選択を許可するダイアログ内のユーザーの選択肢を取得します。
CFileDialog::GetSelectedControlItem ダイアログ内の指定したコンテナー コントロールから特定の項目を取得します。
CFileDialog::GetStartPosition ファイル名リストの最初の要素の位置を返します。
CFileDialog::HideControl エクスプローラー スタイルの Open または Save As 共通ダイアログ ボックスで、指定したコントロールを非表示にします。
CFileDialog::IsPickFoldersMode フォルダー ピッカー モードの現在のダイアログを指定します。
CFileDialog::MakeProminent 他の追加されたコントロールと比較して目立つよう、ダイアログにコントロールを配置します。
CFileDialog::RemoveControlItem ダイアログのコンテナー コントロールから項目を削除します。
CFileDialog::SetCheckButtonState ダイアログのチェック ボタン (チェック ボックス) の現在の状態を設定します。
CFileDialog::SetControlItemState ダイアログで見つかったコンテナー コントロール内の項目の現在の状態を設定します。
CFileDialog::SetControlItemText コントロール項目のテキストを設定します。 たとえば、メニュー内のラジオ ボタンや項目に付随するテキストなどです。
CFileDialog::SetControlLabel ボタン テキストや編集ボックス ラベルなど、コントロールに関連付けられているテキストを設定します。
CFileDialog::SetControlState 特定のコントロールの現在の可視性と有効な状態を設定します。
CFileDialog::SetControlText エクスプローラー スタイルの Open または 名前を付けて保存] ダイアログ ボックスで、指定したコントロール テキストを設定します。
CFileDialog::SetDefExt エクスプローラー スタイルの Open または 名前を付けて保存 共通ダイアログ ボックスの既定のファイル名拡張子を設定します。
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_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 メッセージを処理します。

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

名前 説明
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 以降で、 CFileDialogを使用する場合、以前のバージョンの Windows とは異なります。 以前のバージョンの Windows からプロジェクトを移植するには、コード内の CFileDialog コントロールへのすべての参照を更新する必要があります。

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

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

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

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

Note

Windows Vista 以降では、 IFileDialog::SetFileTypes を複数回呼び出すとエラーが発生します。 CFileDialogの任意のインスタンスに対する 2 回目のSetFileTypes呼び出しでは、Windows Vista 以降で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の使用方法の詳細については、「Common ダイアログ クラスを参照してください。

継承階層

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFileDialog

要件

Header: afxdlgs.h

CFileDialog::AddCheckButton

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

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

パラメーター

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

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

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

解説

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
フォルダーがリスト内のどこに配置されているかを指定します。

プサイ
ユーザーが使用できるようにするフォルダーを表す 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 の状態が同期されるとは限りません。 この関数は、m_ofn構造体に一致するようにCFileDialogの状態を強制的に更新します。 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 に設定すると、 File Open ダイアログ ボックスが作成されます。 [ファイルの名前を付けて保存] ダイアログ ボックス作成するには、FALSE に設定します。

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
[入力] このパラメーターは Visual Studio 2008 以降で使用でき、Windows Vista 以降で実行している場合にのみ新しいスタイルのダイアログが使用されます。

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

解説

File Open または 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 では、このパラメーターは無視されます。 bVistaStyle が TRUE に設定されている場合、Visual Studio 2008 以降でプログラムをコンパイルするときに、新しい Vista スタイルの File Dialog が使用されます。 それ以外の場合は、前の MFC スタイル File Dialog が使用されます。

ダイアログ テンプレートは、 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_ALLOWMULTISELECT フラグを設定します。

ユーザーがダイアログ ボックスの [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 はチェック済みであることを示します。FALSE はオフであることを示します。

解説

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" を返します。

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

CFileDialog::GetFileName

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

CString GetFileName() const;

戻り値

ファイルの名前。

解説

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

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

CFileDialog::GetFileTitle

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

CString GetFileTitle() const;

戻り値

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

解説

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

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

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

CFileDialog::GetFolderPath

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

CString GetFolderPath() const;

戻り値

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

解説

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

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

CFileDialog::GetIFileDialogCustomize

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

IFileDialogCustomize* GetIFileDialogCustomize();

戻り値

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

解説

この関数は、Windows Vista 以降でのみ、 bVistaStyle TRUE に設定されているオブジェクトと共に使用します。 bVistaStyle が FALSE の場合、この関数を使用すると、リリース モードで 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();

戻り値

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

解説

この関数は、Windows Vista 以降でのみ、 bVistaStyle TRUE に設定されているオブジェクトと共に使用します。 この関数は、 CFileDialogOpen ダイアログ ボックスではない場合、または bVistaStyle が FALSE に設定されている場合に 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();

戻り値

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

解説

この関数は、Windows Vista 以降でのみ、 bVistaStyle TRUE に設定されているオブジェクトと共に使用します。 この関数は、 CFileDialogSave ダイアログ ボックスではない場合、または bVistaStyle が FALSE に設定されている場合に 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 番目のバージョンを使用して、 File Open または File Save As ダイアログ ボックスの外観を初期化します。このダイアログ ボックスを作成した後、 DoModal メンバー関数で表示する前に行います。 たとえば、m_ofnlpstrTitle メンバーを、ダイアログ ボックスに含めるキャプションに設定できます。

CFileDialog::GetPathName

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

CString GetPathName() const;

戻り値

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

解説

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

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

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

CFileDialog::GetReadOnlyPref

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

BOOL GetReadOnlyPref() const;

戻り値

ダイアログ ボックスの [読み取り専用] チェック ボックスがオンの場合は 0 以外。それ以外の場合は 0。

解説

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

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

POSITION GetStartPosition() const;

戻り値

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

CFileDialog::HideControl

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

void HideControl(int nID);

パラメーター

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

解説

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

CFileDialog::IsPickFoldersMode

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

BOOL IsPickFoldersMode() const;

戻り値

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

解説

CFileDialog::m_ofn

m_ofnOPENFILENAME型の構造体です。 この構造体のデータは、 CFileDialogの現在の状態を表します。

解説

この構造体を使用して、 File Open または File Save As ダイアログ ボックスの外観を初期化してから、 DoModal メソッドで表示します。 たとえば、m_ofnlpstrTitle メンバーを、ダイアログ ボックスに含めるキャプションに設定できます。

Windows Vista 以降のスタイルの CFileDialog では、 m_ofn はダイアログ ボックスの状態と常に一致するとは限りません。 これは、以前のバージョンの Windows のダイアログ ボックスと同期されます。 Windows Vista 以降でのm_ofn構造とCFileDialog状態の同期の詳細については、「CFileDialog::ApplyOFNToShellDialogCFileDialog::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_NONETWORKBUTTON - 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_SELCHANGE メッセージを処理する場合は、このメソッドをオーバーライドします。

virtual void OnFileNameChange();

解説

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

このメッセージは、OFN_EXPLORER フラグがオンになっているダイアログ ボックスが作成された場合にのみ送信されます。 通知の詳細については、「 CDN_SELCHANGE」を参照してください。 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();

解説

この通知メッセージは、システムが Open または Save As ダイアログ ボックスのコントロールの配置を完了したときに送信されます。

これは、ダイアログ ボックスが 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_LBSELCHANGE iCurSel は、単一選択リスト ボックスで選択した項目を指定します。

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

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

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

解説

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

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 はチェック済みであることを示します。FALSE はオフを示します。

解説

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

エクスプローラー スタイルの Open または Save As ダイアログ ボックスで、指定したコントロールのテキストを設定するには、このメソッドを呼び出します。

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 の「Flags」セクションを参照してください。

解説

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]Explorer 以外の CFileDialog オブジェクトのテンプレート リソースの ID 番号を格納します。 このテンプレートは、Windows NT 3.51 または OFN_EXPLORER スタイルが存在しない場合にのみ使用されます。

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

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

lpWin4ID
[in]Explorer 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

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

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 クラス
階層図