CFileDialog定制有关问题

CFileDialog定制问题!
在做Proe二次开发过程中,遇到了打开多个文件的问题。想定制一个CFileDialog选择多个文件。Preo的文件为:*.prt.1,*.prt.2类型的。带有版本信息。
因此,需要对低版本文件进行过滤,CFileDialog不能满足这样的要求。想通过OnFolderChange将低版本的文件过滤掉不显示,但目前无法实现了。有人能给个提示吗?谢谢!
CFileDialog

------解决方案--------------------
指定OFN_ENABLEINCLUDENOTIFY,这样在打开一个目录之前,你的对话框会收到CDN_INCLUDEITEM消息,你可以处理这个消息来通知对话框是否包含一个文件。
Vista版本的文件对话框不支持这个消息。
------解决方案--------------------
后缀名如果一样,版本信息写在文件内部,不知道如何过滤

扩展名不一样可以用下面方法


CString str;
str="BMP FILE(*.bmp)
------解决方案--------------------
*.bmp
------解决方案--------------------
JPG FILE(*.jpg)
------解决方案--------------------
*.jpg
------解决方案--------------------
";

CFileDialog dlg(TRUE, NULL, NULL, NULL, str);
dlg.DoModal();



------解决方案--------------------
CFileDialogEx是派生自CFileDialog的类
void CFileDialogEx::OnFolderChange()
{
    // TODO: Add your specialized code here and/or call the base class
    CWnd *pWnd = NULL;
    pWnd = GetWindow(GW_HWNDFIRST);
    TCHAR szClassName[MAX_PATH] = {};
    if(pWnd)
    {
        do
        {
            GetClassName(pWnd->m_hWnd, szClassName,MAX_PATH);
            if(_tcscmp(szClassName, _T("SHELLDLL_DefView")) == 0)
            {
                //获取文件夹路径
                CString strPath;
                strPath = GetFolderPath();
                CListCtrl *pListCtrl = (CListCtrl *)pWnd->GetDlgItem(0x00000001);
                int nTotal = pListCtrl->GetItemCount();
                for(int i = 0; i < nTotal; i++)
                {
                    //下面是获取文件名,判断如果不是想要的文件就删除
                    CString strItem = pListCtrl->GetItemText(0, 0);
                    pListCtrl->DeleteItem(0);
                }
                break;
            }
        }while(pWnd = pWnd->GetWindow(GW_HWNDNEXT));
    }
    CFileDialog::OnFolderChange();
}

如果你还想通过切换下面后缀选择的combobox的事件的话,那可以在CFileDialogEx中处理CBN_SELCHANGE等消息,在这消息里添加上面的代码
------解决方案--------------------
Windows 7的文件对话框用的不是list control。