1. 获取Debug或Release所在的路径
CString GetModuleDir()
{
HMODULE module = GetModuleHandle(0);
char pFileName[MAX_PATH];
GetModuleFileName(module, pFileName, MAX_PATH);
CString csFullPath(pFileName);
int nPos = csFullPath.ReverseFind( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Left( nPos );
}
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;
}
路径分解函数:
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 + a_sSuffix + sExt;
CString strText;
TCHAR exepath[MAX_PATH]={0};
::GetModuleFileName(NULL,exepath,MAX_PATH);
strText=exepath;
strText=strText.Left(strText.ReverseFind(''''));
strText += _T("");
GetModuleFileName是一个API函数,通过这个函数,可以获得运行的当前程序的EXE文件所在的路径。直接将这几句代码,在MFC中封装成一个函数即可。
GetModuleFileName第一个参数是示例句柄,设为NULL则表示当前执行的EXE的。第二个参数就是接受得到的可执行路径的字符串缓冲。第三个是缓冲的大小。大小就是声明的缓冲的大小,以TCHAR为单位。
strText.Left()是CString提供的字符串截取函数,具体的可以查看MSDN或者本站其他相关文章。
ReverseFind()是CString提供的字符串查找函数,具体的可以查看MSDN或者本站其他相关文章。