Win32有许多操作字符串路径的API,整理记录下来方便以后使用。
//关于windows路径的API
//声明路径变量用 TCHAR szPath[MAX_PATH] 来声明
TCHAR szPath[MAX_PATH] = _T("D:\\资料\\整理的笔记");
TCHAR szPath2[MAX_PATH] = _T("资料\\笔记");
TCHAR szPath3[MAX_PATH] = _T("");
LPTSTR pszPath = NULL;
::PathRemoveBackslashW(szPath);//去除路径最后的反斜杠“\\”
::PathAddBackslashW(szPath);//在路径最后加上反斜杠“\\”
::PathRemoveBlanksW(szPath);//去除路径前后的空格
pszPath = ::PathFindExtensionW(szPath);//查找路径的扩展名
bRet = ::PathMatchSpecW(szPath,_T("*.dwg"));//判断路径是否匹配制定的扩展名
::PathAddExtensionW(szPath,_T(".dwg"));//在文件路径后面加上扩展名
::PathRemoveExtensionW(szPath);//去除文件路径扩展名
::PathRenameExtensionW(szPath,_T(".pdf"));//更改文件路径扩展名
pszPath = ::PathFindFileNameW(szPath);//获取路径的文件名
::PathStripPathW(szPath);//去掉路径中的目录部分,得到文件名
::PathRemoveFileSpecW(szPath);//去除文件名,得到目录
::PathStripToRootW(szPath);//得到根目录
::PathAppendW(szPath,szPath2);//将一个路径追加到另一个路径后面
::PathCombineW(szPath3,szPath,szPath2);//合并两个路径
bRet = ::PathRelativePathToW(szPath3,szPath,FILE_ATTRIBUTE_NORMAL,szPath2,FILE_ATTRIBUTE_DIRECTORY);//创建一个路径到另一个路径的相对路径 FILE_ATTRIBUTE_DIRECTORY:代表是一个文件夹,否则视为文件
bRet = ::PathYetAnotherMakeUniqueName(szPath3,szPath,NULL,NULL);//基于已存在的文件,自动创建一个唯一的文件名。比较有用,比如存在“新建文件”,此函数会创建文件名“新建文件(2)”
::SHGetSpecialFolderPathW(nullptr, szPath3, CSIDL_APPDATA, TRUE);//得到的是C盘中:C:\Users\17621\AppData\Roaming下的目录
HMODULE hModule = ::AfxGetInstanceHandle();//获取当前应用程序的实例句柄
hModule = ::AfxGetResourceHandle();//获取当前应用程序的资源模块句柄
::AfxSetResourceHandle(hModule);//设置程序目前要使用的资源模块句柄
hModule = ::GetModuleHandleW(_T("MyBaseDLL.dll"));//获取一个应用程序或动态链接库的模块句柄。只有在当前进程的场景中,这个句柄才会有效。
::GetModuleFileNameW(hModule, szPath3, MAX_PATH);//通过句柄获得完整路径
wchar_t buffer[MAX_PATH];
DWORD code = GetEnvironmentVariable(L"JDC_PROTAL", buffer, MAX_PATH);//得到环境变量的值
::GetCurrentDirectoryW(MAX_PATH,szPath3);//得到当前进程的工作路径
::SetCurrentDirectoryW(_T("E:\\test\\"));//设置当前进程的工作路径
版权声明:本文为phd17621680432原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。