CFileDialog定制问题! CFileDialog 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 指定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等消息,在这消息里添加上面的代码 //下面是获取文件名,判断如果不是想要的文件就删除CString strItem = pListCtrl->GetItemText(0, 0);pListCtrl->DeleteItem(0);这里就可以通过获取的文件夹和文件名来组合成文件路径,从而得到文件的信息 大哥,按照你的方法还是没有办法得到,无法进入这个if语句了。 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; } 可能吧!我用到Win7系统,VS2010 Windows 7的文件对话框用的不是list control。 用spy++看看是那个控件是什么类型了 如果我的DOS客户机已经与NOVELL服务器连接了,怎么让他们传命令? 《急!在线等!》如何动态添加工具栏下拉菜单的菜单项? 散散分数:关于http代理服务器的问题? 关于LIST CTRL的一个问题 搞VC++有前途吗??? 困惑:关于ADO访问oracle带参数输出(out)存储过程的问题!! 关于vc的一个问题,急 为何别的机子运行不了我的ActiveX程序? 如何实现打开图像文件时的预览功能 兄弟们,有没有什么好方法,使木马程序可以突破防火墙。 我的这个11月是黑色的,被骗了2次,散发求祝福 帮我看看程序里面指针的错误
Vista版本的文件对话框不支持这个消息。
CString str;
str="BMP FILE(*.bmp)|*.bmp|JPG FILE(*.jpg)|*.jpg||"; CFileDialog dlg(TRUE, NULL, NULL, NULL, str);
dlg.DoModal();
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等消息,在这消息里添加上面的代码
CString strItem = pListCtrl->GetItemText(0, 0);
pListCtrl->DeleteItem(0);这里就可以通过获取的文件夹和文件名来组合成文件路径,从而得到文件的信息
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;
}