//方法一 外壳函数,最少也要Windows2000才行
WCHAR
pszwPath[260] = {0};
MultiByteToWideChar(CP_ACP, 0,
pszPath,
strlen
(pszPath)+1, pszwPath, 256);
int
ret = SHCreateDirectory(NULL, pszwPath);
if
( ret==ERR_SUCCEED || ret==ERROR_FILE_EXISTS || ret==ERROR_ALREADY_EXISTS)
return
TRUE;
else
return
FALSE;
//方法二 WINDOWS API 用了STL string
string strFullPath = pszPath;
string strTmp;
int
pos = 0, last_pos = 0;
while
(pos != -1)
{
pos = strFullPath.find_first_of(
'\\'
, last_pos);
if
( pos != -1
/*npos*/
)
{
strTmp.assign(strFullPath, 0, pos);
//目录不存在则创建之
if
( !IsPathExist(strTmp.c_str()) )
CreateDirectory(strTmp.c_str(), NULL);
last_pos = pos+1;
}
else
{
if
( (strFullPath.size() - last_pos ) > 0)
{
if
( !IsPathExist(strFullPath.c_str()) )
CreateDirectory(strFullPath.c_str(), NULL);
last_pos = pos+1;
}
break
;
}
}
MFC程序得到本身路径
在开发工程中,往往需要知道当前程序本身所在目录。
一种方法是在程序安装的时候利用安装程序把文件路径写入注册表。在较大的程序中,这种方法比较常用
另一种,就是在程序得到路径。这样,程序随便移动到哪里,都可以得到正确的路径。这也是本文介绍的方法。
并且经本人测试,当把文件打包成安装包后,此路径会自动指向安装包路径,很是不错!
方法一:
[code]
//得到帮助文件的路径
CString strFullName = AfxGetApp()->m_pszHelpFilePath;
//得到的是:X:\XXXX\XXX.hlp
//解析路径,得到当前运行程序所在目录
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
_splitpath(strAppName, drive, dir, NULL,NULL);
CString strPath;
strPath.Format("%s%s", drive, dir);
//strPath即为得到的当前运行程序所在目录
[/code]
另外,AfxGetApp()->m_pszAppName 得到应用程序名称
AfxGetApp()->m_pszExeName 得到程序文件名,不包括扩展名
方法二:
得到全路径
TCHAR exeFullPath[MAX_PATH]; // MAX_PATH
GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径
也就是当前运行程序的全路径
利用方法一的解析路径的方法,即可得到程序所在路径。
GetModuleFileName函数原型
DWORD GetModuleFileName(
(PS:个人实现过,能成功,感谢原作者文章对我的帮助