1. [高分][紧急]vc2005中CFilEdialog的后缀名过滤
CFileDialog dlg(true, "*.*", "",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"文件类型中显示的内容(*.txt)|*.txt||", this);
使用这个构造函数就可以,
"文件类型中显示的内容(*.txt)|*.txt||"这个参数中 “文件类型中显示的内容(*.txt)”是在文件类型中显示的内容,“|*.txt||”是在目录中显示后缀名文件。
2. FileDialog打开文件如何限定打开类型!文件对话框中文件名下面有个对象类型可以筛选符合此后缀的文件显示
FileDialog 过时了。
看一下:C:\Program Files\Java\jdk1.6.0_13\demo\jfc\Notepad\src
里面用的是 JFileChooser:
Frame frame = getFrame();
JFileChooser chooser = new JFileChooser();
int ret = chooser.showSaveDialog(frame);
if (ret != JFileChooser.APPROVE_OPTION) {
return;
}
File f = chooser.getSelectedFile();
frame.setTitle(f.getName());
Thread saver = new FileSaver(f, editor.getDocument());
saver.start();
3. 请教如何用CFileDialog打开并读一个文件
CFileDialog cFileDlg(TRUE, _T( "txt "),(LPCTSTR)NULL,
OFN_ENABLESIZING|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_LONGNAMES|
OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST|OFN_CREATEPROMPT,
_T( "Text Files (*.txt)|*.txt|All Files (*.*)|*.*| "),this);
//获得要打开的文件
if(cFileDlg.DoModal()!=IDOK)
{
return;
}
//定义文件对象,并只读打开指定文件
CFile file(cFileDlg.GetPathName(),CFile::modeRead/*|CFile::modeWrite*/);
//准备文件大小的缓冲区
CString strTxt;
char *pBuf=strTxt.GetBuffer(file.GetLength());
//读入整个文件
file.Read(pBuf,file.GetLength());
strTxt.ReleaseBuffer(file.GetLength());
//将文件内容设置到某编辑框。
m_MyEdit.SetWindowText(strTxt);
GetDlgItem(IDC_EDIT_CONTENT)->EnableWindow(TRUE);
m_FlagHistory = FALSE;
4. C++中 CFileDialog类怎么用的
CFileDialog类的应用有很多,下面介绍几个最常用的应用:
构造函数原型:
CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL
);
参数:
bOpenFileDialg如果为TRUE, 则创建文件打开对话框;如果为FALSE,则构造一个File Save As(另存为)对话框。
lpszDefExt缺省文件扩展名,如果用户在文件名编辑框中不包含扩展名,则lpszDefExt定义的扩展名自动加到文件名后。如果为NULL,则不添加扩展名。
lpszFileName初始显示于文件名编辑框中的文件名,如果为NULL,则不显示初始文件名。
dwFlags一个或多个标志的组合,使你可定制对话框。要了解这些标志的描述,可参阅联机文档“Win32 SDK”中的OPENFILENAME结构。如果你改变m_ofn.Flags结构成员,在改变中用OR操作保持缺省行为完整。
lpszFilter一列字符串对,指定可以应用到文件的过滤器。如果指定过滤器,仅被选择的文件显示于文件列表框中。请参阅说明部分,了解如何使用过滤器。参数格式如:
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
pParentWnd指向文件对话框对象的父窗口或拥有者窗口。
要使用CFileDialog,首先用构造函数构造一个对象,当创建了一个对话框后,可以设置或修改m_ofn结构中的值来初始化对话框控件的值或状态。初始化对话框控件后,调用DoModal成员函数显示对话框并使用户输入路径和文件。
重要函数:
CString CFileDialog::GetPathName( ) 得到完整的文件名(包括目录名和扩展名)如c:/test/test1.txt
CString CFileDialog::GetFileName( ) 得到完整的文件名(包括扩展名).如test1.txt
CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如txt
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名,如test1
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件的位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
打开大量文件:
使用CFileDialog类并设置OFN_ALLOWMULTISELECT标志时,OPENFILENAME结构体的lpstrFile成员是一个指向用户申请分配的缓冲区,里面接受所选的路径和文件名列表,这个列表的每一项由一个NULL隔开,最末以两个NULL结束。nMaxFile成员指明了缓冲区的大小,如果所选择的文件名的加起来的总长度超过了此值,则DoModal函数返回IDCANCEL,如果用户试图打开超过缓冲区大小的文件集的话,CommDlgExtendedError()将返回FNERR_BUFFERTOOSMALL,这时候,lpstrFile的前两个byte将会包含实际需要的缓冲区的字节数。
lpstrFile缓冲区字节数限制:
1 在Windows 95/98/Me下只能在ANSI下使用,且没有大小限制;
2 在Windows NT 4.0及更早版本下,被限制在32k字节以内;
3 在Windows 2000/XP版本下,MSDN中介绍说在ANSI下32k字节,Unicode下没有限制。但是,实际上两者都被限制在32k字节以内;
5. MFC的文件对话框过滤器怎么设置
CFileDialog::CFileDialog
CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL
);
参数: bOpenFileDialg 如果为TRUE, 则创建文件打开对话框;如果为FALSE,则构造一个File Save As(另存为)对话框。
lpszDefExt 缺省文件扩展名,如果用户在文件名编辑框中不包含扩展名,则lpszDefExt定义的扩展名自动加到文件名后。如果为NULL,则不添加扩展名。
lpszFileName 初始显示于文件名编辑框中的文件名,如果为NULL,则不显示初始文件名。
dwFlags 一个或多个标志的组合,使你可定制对话框。要了解这些标志的描述,可参阅联机文档“Win32 SDK”中的OPENFILENAME结构。如果你改变m_ofn.Flags结构成员,在改变中用OR操作保持缺省行为完整。
lpszFilter 一列字符串对,指定可以应用到文件的过滤器。如果指定过滤器,仅被选择的文件显示于文件列表框中。请参阅说明部分,了解如何使用过滤器。
pParentWnd 指向文件对话框对象的父窗口或拥有者窗口。
说明:
调用此成员函数构造一个标准Windows文件对话框对象,或构造一个打开对话框或构造一个存盘对话框,根据bOpenFileDialog的值决定。
OFN_ALLOWMULTISELECT标志。你应提供文件名缓冲区来放置返回的多个文件名的列表,这通过用一个分配了的缓冲区指针替换m_ofn.lpstrFile来实现,要在创建了CFileDialog之后调用DoModal之前进行此操作。另外,必须用m_ofn.lpstrFile指向的缓冲区字节数来设置m_ofn.nMaxFile。
为使用户用鼠标或键盘改变一个Explorer风格对话框的大小,设置OFN_ENABLESIZING标志,这仅当你提供一个钩子进程或定制模板时才有必要设置。此标志仅与一个Explorer风格的对话框一起工作,旧风格的对话框不可改变大小。
lpszFilter参数用于判断文件名类型及文件列表框中哪些可被显示。双字符串的第一个字符串描述过滤器,第二个串表明使用的文件扩展名,多重扩展可用“;”来指定。字符串由两个“|”字符结尾,最后是一个NULL。也可使用CString对象作为参数。
例如,Mirosoft Excel 允许用户用.XLC扩展名(表)或.XLS(工作表)打开文件,Excel过滤器应如下:
static char BASED_CODE szFilter[] =
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";
6. 怎么用CFileDialog 选择文件夹
CString BrowseFolder(HWND hWnd, LPCTSTR lpTitle)
{
char szPath[MAX_PATH]={0};
BROWSEINFO m_bi;
m_bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
m_bi.hwndOwner = hWnd;
m_bi.pidlRoot = NULL;
m_bi.lpszTitle = lpTitle;
m_bi.lpfn = NULL;
m_bi.lParam = NULL;
m_bi.pszDisplayName = szPath;
LPITEMIDLIST pidl = ::SHBrowseForFolder( &m_bi );
if ( pidl )
{
if( !::SHGetPathFromIDList ( pidl, szPath ) ) szPath[0]=0;
IMalloc * pMalloc = NULL;
if ( SUCCEEDED ( ::SHGetMalloc( &pMalloc ) ) ) // 取得IMalloc分配器接口
{
pMalloc->Free( pidl ); // 释放内存
pMalloc->Release(); // 释放接口
}
}
return szPath;
}
=============================================================
调用
void CFlorderDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString SelectPath=BrowseFolder(this->m_hWnd,"选择目录");
AfxMessageBox(SelectPath);
}
用户在磁盘上寻找文件时,所历经的文件夹线路叫路径。路径分为绝对路径和相对路径。
1】绝对路径:从根文件夹开始的路径,以“\”作为开始。
2】相对路径:从当前文件夹开始的路径。
DOS程序命令中:d代表盘符 p代表路径 0(零)代表文件本身,%~dp0就是文件所在的完整路径
Windows应用中文件夹路径就是当打开文件夹时地址栏显示的信息,如
H:\Downloads\Game代表的就是Game文件夹的完整路径
7. CFileDialog过滤文件类型参数怎么设置
如下:
CString str="所有文件(*.*)|*.*|jpeg文件(*.jpg)|*.jpg|jpg文件; gif文件(*.jpg; *.gif)|*.jpg; *.gif|";
CFileDialog Dlg(TRUE,NULL,NULL,NULL,str,this);
Dlg.DoModal();
8. 如何让CFileDialog在打开时显示指定的目录
关于CFile的文件路径,分两种方式,一种是绝对路径,一种是相对路径。
绝对路径就是”D:\\a\\xx.txt"的形式,你可以直接指定,也可以用CFileDialog弹出对话框由用户界面指定;
相对路径分默认路径和工作路径获取两种。你可以用".\\aa\\xx.txt"指定默认目录子目录或者省略前面的.\\也是可以的;工作路径获取比较靠谱(因为默认路径可能会造成不确定性,在程序运行过程中可能会被其它原因改变),工作路径要在程序运行入口的时候通过GetCurrentDirectory函数获取并保存起来,方便随时使用,这个是一个例如"d:\\yourProject\\"的字符串形式,每次拼接子目录和文件名即可,示例代码如下:
9. VC 中如何获得文件打开/保存对话框中的当前选定的类型过滤器
这个可以:
CString filter_str = "txt files (*.txt)|*.txt|word files (*.doc)|*.doc||";
CFileDialog mSaveDlg(FALSE,NULL,NULL,NULL,filter_str,NULL);//初始化
mSaveDlg.DoModal();//显示
DWORD filter_num = mSaveDlg.m_ofn.nFilterIndex;//返回的是当前选择的文件类型是第几个
filter_num -= 1;//适应数组
char a[][9] = {".txt",".avi",""};//文件类型数组
CString file_ext = a[filter_num];//获得文件类型的名称
int ext_length = file_ext.GetLength();//获得长度
10. [紧急]vc2005中CFileDialog的后缀名过滤大神们帮帮忙
CString szFilter; szFilter = "文本文件(*.txt)|*.txt||"; CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter); 上面的程序可以实现了。在调用dlg前初始化过滤器szFilter。