VC获取当前程序文件的路径,文件名以及路径2种方法对比建议
1.方法1
char pBuf[MAX_PATH]; //存放路径的变量
GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录
strcat(pBuf,"//");
strcat(pBuf,AfxGetApp()->m_pszExeName);
strcat(pBuf,".exe"); //获取程序的全文件名
2.方法2
//函数返回应用程序所在的路径
CString CClientApp::ReturnPath()
{
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind('//');
sPath=sPath.Left(nPos);
return sPath;
}
3.对比及建议
方法1获取的是程序的工作路径,如某个程序安装在C,D盘或者其它任何,当你从[开始]-[程序]后的菜单中打开该文件,此时获取的是用户工作路径,如:C:/Documents and Settings/[计算机当前用户名]/....../....
如果你想通过这个路径来加载你放在程序目录下的文件,必定出错。通常这种情况在你编译调试程序时是不会出错的,你跟踪得到的绝对路径,但打包安装后一定出问题。
方法2获取的是程序的绝对路径,用这个路径加载同目录下的文件是不会有问题的。
如果你要确保成功加载文件,建议使用方法2!!!!!!