在編制對話框應用程序的過程中,我發現一個很有趣的現象,就是當使用CFile類的Open成員函數打開一個文件時,如果不指定文件的路徑會默認為當前程序的路徑,但如果使用了文件打開對話框CFileDialog類並打開了一個文件的話,則Open成員函數文件的默認路徑會變成CFileDialog類打開文件的路徑。下面詳細說明如下:
CFile::Open
virtual BOOL Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFileException* pError=NULL);
返回值:若打開成功,則返回非0值;否則返回0。僅當返回0時pError參數才有意義。
參數:lpszFileName 一個字符串,指定所需文件的路徑。
nOpenFlag 一個UINT值,定義文件的共享和存取方式。
pError 標識指向一個已有的文件異常對象的指針,該對象指示打開操作的完成狀態。
說明:Open函數是為了配合缺省的CFile構造函數使用而設計的。
我使用如下的代碼來獲得當前打開文件的默認路徑:
CString strCurrentPath,strMsg;
GetCurrentDirectory(200,strCurrentPath.GetBuffer(200));
strCurrentPath.ReleaseBuffer();
strMsg=_T("當前文件打開路徑為:\n")+strCurrentPath;
MessageBox(strMsg);
當我沒有使用文件打開對話框時獲得的路徑情形如下:
當我使用了文件打開對話框打開C:\Program Files\desktop.ini時獲得的路徑情形如下:
如果你在程序編制過程中在使用了文件打開對話框CFileDialog以後又想使用CFile::Open打開程序所在路徑的文件,就只有在使用文件打開對話框CFileDialog之前使用Windows API函數GetCurrentDirectory()獲得路徑並使用變量保存下來。
以上是作者編程過程的一點小體會,贻笑大方了,請讀者多加指教。
本文配套源碼