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;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
CFileDialog dlg(TRUE)
CFileDialog dlg(TRUE);//<-这里用TRUE与FALSE有什么不同?
// TRUE是“打开”对话框
// FALSE是“另存为”对话框
int ret=dlg.DoModal();
if(ret==IDOK)
{
CString pathname=dlg.GetPathName(); //得到文件所在路径+文件名
CString filename=dlg.GetFileName(); //得到文件名
char tbuf[120];
sprintf(tbuf,"The %s file in %s is saved!",filename,pathname);
AfxMessageBox(tbuf);
}
1.GetCurrentDirectory ,由于打开,保存文件对话框都会改变当前路径,一般不建议使用这个
2.GetModuleFileName 头文件 Header: Declared in Winbase.h; include Windows.h.
转自::http://blog.csdn.net/liviatt/archive/2008/12/08/3474094.aspx
以下的SfxGetModulePath函数也可实现获取当前程序的路径:
需包含头文件#include "Shlwapi.h"
#pragma comment(lib,"shlwapi.lib")
//SfxGetpathSplit return part of a full filename,such as drive,dir,filename,title,ext,ect...
CString SfxGetPathSplit(LPCTSTR szFullFileName,DWORD dwFlags)
{
TCHAR szBuf[MAX_PATH];
szBuf[0] = _T('/0');
CString szRet;
if(dwFlags == PS_EXT)
{
_tsplitpath(szFullFileName, NULL, NULL, NULL, szBuf);
szRet = szBuf;
if(!szRet.IsEmpty() && szRet[0] == _T('.'))
{
szRet.Remove(_T('.'));
return szRet;
}
}
else if(dwFlags == PS_DRIVE)
{
_tsplitpath(szFullFileName, szBuf, NULL, NULL, NULL);
return szBuf;
}
else if(dwFlags == PS_TITLE)
{
_tsplitpath(szFullFileName, NULL,NULL,szBuf,NULL);
return szBuf;
}
else if(dwFlags == PS_DIR)
{
TCHAR szDir[MAX_PATH];
_tsplitpath(szFullFileName, szBuf, szDir, NULL, NULL);
::lstrcat(szBuf, szDir);
szRet = szBuf;
if(!szRet.IsEmpty() && szRet.Right(1) == _T('//'))
szRet = szRet.Left(szRet.GetLength()-1);
return szRet;
}
else if(dwFlags == PS_FILENAME)
{
szRet = szFullFileName;
int nPos = szRet.ReverseFind(_T('//'));
if(nPos != -1)
szRet = szRet.Right(szRet.GetLength() - nPos -1);
return szRet;
}
return "";
}
CString SfxGetModulePath(HINSTANCE hInst)
{
TCHAR szBuf[MAX_PATH];
GetModuleFileName(hInst,szBuf,MAX_PATH);
CString szPath(szBuf);
szPath = SfxGetPathSplit(szPath,PS_DIR);
return szPath;
}