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_szFileTitleとm_szFileNameに、
それぞれファイル名とファイルパスが設定されます。
|