代码比较简单:
CString CT3D_GetApplicationDir()
{
CString szFileName;
GetModuleFileName(g_hInstance,szFileName.GetBuffer(MAX_PATH),MAX_PATH);
szFileName.ReleaseBuffer();
char szDrive[MAX_PATH];
char szDir[MAX_PATH];
_tsplitpath(szFileName,szDrive,szDir,NULL,NULL);
szFileName.Format("%s%s",szDrive,szDir);
return szFileName;
}
当g_hInstance为NULL时,表示获得当前进程的路径,也就是exe。
当g_hInstance为dll的地址时,表示获得当前dll的路径。
小知识:
handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。
hmodule 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址。
hinstance 在win32下与hmodule是相同的东西,在win32下还存在主要是因为win16程序使用hinstance来区别task。
评论