Last Updated 2004/01/08
Programming Tips Visual C++ MFC CFileDialog  索 引 
ファイルダイアログフィルター
2004/01/08

ファイルの保存や読込のダイアログはファイル名にフィルターをかけることができる.
フィルターとは,拡張子が TXT のファイルだけ表示したり,すべてのファイルを表示したりする「ファイルの種類」である.

ファイルの種類に
    ソースファイル
    ヘッダファイル
    実行ファイル
    すべてのファイル
という選択肢を持たせ,それぞれの拡張子フィルターを
    *.cpp *.c
    *.hpp *.h
    *.exe
    *.*
とするには以下の様にする.

    CFileDialog dlgFile( TRUE, NULL, NULL,
                         OFN_FILEMUSTEXIST,
                         "ソースファイル(*.cpp;*.c)|*.cpp;*.c|"
                         "ヘッダファイル(*.hpp;*.h)|*.hpp;*.h|"
                         "実行ファイル(*.exe)|*.exe|"
                         "すべてのファイル(*.*)|*.*||");

5番目の引数にてフィルターを指定する.
2つの項目を1セットにして
    "ファイルの種類に表示される内容|実際の拡張子|"
という具合に "|" にて区切る.
例のようにファイルの種類のコンボボックスにいくつもパターンを表示させたいなら1セットにしたものをいくつもつなげる.
そして最後に "|" を付加する.
(最後は "||" となる)

1つの項目で複数の拡張子を指定したい場合は ";"にて区切る.

MFC の CFileDialog を使用する場合の区切りは "|" であるが,m_ofn 構造体でフィルターを指定する場合の区切りは "\0" となるので注意が必要である.
(当然最後は "\0\0" である)

    CFileDialog fDlg(FALSE);
    fDlg.m_ofn.lpstrFilter = "ソースファイル(*.cpp;*.c)\0*.cpp;*.c\0\0";


参照
前後のTips
ファイルダイアログフィルター

DSS ProgrammingTipsCGI Ver2.02