一般说来,要想获得一个文件的相对路径是极其重要的。
比如项目的移植,代码里面加载项目的资源文件如果用的是绝对路径,就像C:\\....这样的,到其他的PC上面就改变了,就无法成功执行了。
那么我们就需要用到GetModuleFileNameW
下面一个简单的DEMO供大家参考,可以直接拷到电脑里面运行。
#include <Windows.h>
#include <Shlwapi.h>
#pragma comment (lib,"Shlwapi.lib")
int main()
{
WCHAR path[MAX_PATH];
GetModuleFileNameW(NULL, path, MAX_PATH);
PathRemoveFileSpecW(path);
PathAppendW(path, L"gifs\\panda.jpg");
ShellExecute(NULL, NULL, path, NULL, NULL, SW_SHOWNORMAL);
return 0;
}
可以看到是Debug下的,就资源文件放到可执行文件目录即可
GetCurrentDirectory(MAX_PATH,path);
PathCombine(path, path, TEXT("..\\.."));
返回当前进程的目录路径,PathCombine是增删路径,上面是返回上上级路径