CFileDialog定制有关问题
CFileDialog定制问题!
在做Proe二次开发过程中,遇到了打开多个文件的问题。想定制一个CFileDialog选择多个文件。Preo的文件为:*.prt.1,*.prt.2类型的。带有版本信息。
因此,需要对低版本文件进行过滤,CFileDialog不能满足这样的要求。想通过OnFolderChange将低版本的文件过滤掉不显示,但目前无法实现了。有人能给个提示吗?谢谢!
------解决方案--------------------
指定OFN_ENABLEINCLUDENOTIFY,这样在打开一个目录之前,你的对话框会收到CDN_INCLUDEITEM消息,你可以处理这个消息来通知对话框是否包含一个文件。
Vista版本的文件对话框不支持这个消息。
------解决方案--------------------
后缀名如果一样,版本信息写在文件内部,不知道如何过滤
扩展名不一样可以用下面方法
------解决方案--------------------
CFileDialogEx是派生自CFileDialog的类
如果你还想通过切换下面后缀选择的combobox的事件的话,那可以在CFileDialogEx中处理CBN_SELCHANGE等消息,在这消息里添加上面的代码
------解决方案--------------------
Windows 7的文件对话框用的不是list control。
在做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。