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。