ホーム WTL Mobile
ファイル選択ダイアログ
ドキュメント種別 ATL/WTL に関する文書
最終更新日 2010/01/09
PR
 WTLではコモンダイアログのファイル選択ダイアログを CFileDialogImplというクラステンプレートでカプセル化しています。 これはATLのCDialogImplクラステンプレートのように基底クラスとしてのみ使用します。 atldlgs.hヘッダではCFileDialogImplから派生したCFileDialogクラスが定義されています。

// atldlgs.h
class CFileDialog : public CFileDialogImpl<CFileDialog>
{
    ...
    ...
			

CFileDialogクラスは、[開く]ダイアログと、 [名前を付けて保存]ダイアログをサポートしています。

 WTLのCFileDialogクラスは、MFCの同名のクラスと同等の機能を備えています。 以下に示すのは、CFileDialogクラスを使用する例です。


プロジェクトファイル ダウンロード
// [開く]ダイアログ
CFileDialog dlg(TRUE, _T("txt"), NULL, 0,
    _T("テキスト ファイル (*.txt)\0*.txt\0すべてのファイル (*.*)\0*.*\0\0"));

if(dlg.DoModal() == IDOK){
    CString strMsg;
    strMsg.Format(_T("ファイル名:%s\nパス:%s"), dlg.m_szFileTitle, dlg.m_szFileName);
    MessageBox(strMsg);
}
			


プロジェクトファイル ダウンロード
// [名前を付けて保存]ダイアログ
CFileDialog dlg(FALSE, _T("txt"), _T("無題"), OFN_OVERWRITEPROMPT,
    _T("テキスト ファイル (*.txt)\0*.txt\0すべてのファイル (*.*)\0*.*\0\0"));

if(dlg.DoModal() == IDOK){
    CString strMsg;
    strMsg.Format(_T("ファイル名:%s\nパス:%s"), dlg.m_szFileTitle, dlg.m_szFileName);
    MessageBox(strMsg);
}
			

CFileDialogクラスのコンストラクタの第1引数にはBOOL値を指定します。 TRUEの場合は[開く]ダイアログを作成し、FALSEの場合は[名前を付けて保存]ダイアログを作成します。 残りの引数は省略可能で、順にデフォルト拡張子、デフォルトファイル名、フラグ、フィルタ、 親ウィンドウのハンドルです。

ファイル選択ダイアログを表示するためにはCFileDialogクラスのメンバ関数であるDoModal()を呼び出します。 ファイルをタップ([名前を付けて保存]ダイアログの場合は[保存]ボタンをタップ)してファイル選択ダイアログを閉じた場合は戻り値としてIDOKが返り、 [キャンセル]ボタンをタップしてファイル選択ダイアログを閉じた場合は戻り値としてIDCANCELが返ります。

戻り値がIDOKの場合は、CFileDialogクラスのメンバ変数である m_szFileTitlem_szFileNameに、 それぞれファイル名とファイルパスが設定されます。