1.获取Debug或Release所在的路径
CString CIniDemoDlg::GetModuleDir() { char pFileName[MAX_PATH]; GetModuleFileName(NULL, pFileName, MAX_PATH); CString csFullPath(pFileName); int nPos = csFullPath.ReverseFind( _T('\') ); if( nPos < 0 ) return CString(""); else return csFullPath.Left( nPos ); }
其中:MAX_PATH的定义在WINDEF.h中
运行结果为:
2. 获取当前工作路径(dsp所在路径)
CString GetWorkDir() { char pFileName[MAX_PATH]; int nPos = GetCurrentDirectory(MAX_PATH, pFileName); CString csFullPath(pFileName); if( nPos < 0 ) return CString(""); else return csFullPath; }
运行结果为:
3.路径分解函数:
void CIniDemoDlg::OnSeperate() { // TODO: Add your control notification handler code here char a_sFileName[256]; GetModuleFileName(NULL,a_sFileName,256); CString sPath; CString sDrive;//磁盘名 CString sDir;//文件路径 CString sFileName;//取出文件路径后的文件名 CString sExt;//文件扩展名 char drive[_MAX_DRIVE];//磁盘名 char dir[_MAX_DIR];//路径名 char fname[_MAX_FNAME];//文件名 char ext[_MAX_EXT];//扩展名 _splitpath(a_sFileName, drive, dir, fname, ext ); sDrive.Format("驱动%s ",drive); sDir.Format("目录%s ",dir); sFileName.Format("文件名%s ",fname); sExt.Format("扩展名%s ",ext); sPath= sDrive + sDir + sFileName + sExt; MessageBox(sPath); }
运行结果: