代码比较简单: 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。

评论