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 ダイアログ クラスを参照してください。
継承階層
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.Flags
OFN_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.Flags
OFN_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 に設定されているオブジェクトと共に使用します。 この関数は、 CFileDialog
が Open ダイアログ ボックスではない場合、または 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 に設定されているオブジェクトと共に使用します。 この関数は、 CFileDialog
が Save ダイアログ ボックスではない場合、または 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_ofn
のlpstrTitle
メンバーを、ダイアログ ボックスに含めるキャプションに設定できます。
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_ofn
は OPENFILENAME
型の構造体です。 この構造体のデータは、 CFileDialog
の現在の状態を表します。
解説
この構造体を使用して、 File Open または File Save As ダイアログ ボックスの外観を初期化してから、 DoModal メソッドで表示します。 たとえば、m_ofn
の lpstrTitle メンバーを、ダイアログ ボックスに含めるキャプションに設定できます。
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
内部オブジェクトの現在の状態に基づいて、CFileDialog のm_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();