原文网址:http://yeahyuanqing.blog.163.com/blog/static/118025091201149480818/

MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数,GetCurrentDirectory只是返回当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录,GetCurrentDirectory()适用于XP等系统,,在WinCE上不能使用,GetModuleFileName()适用于WinCE2.0以后. 
函数说明:

DWORD WINAPI GetModuleFileName(
HMODULE hModule,
LPTSTR lpFileName,
DWORD nSize
);
函数功能
  此函数得到当前应用程序的运行目录,还包括应用程序的文件名。 
参数说明
  hModule:要获取文件名的模块名柄,可以是运用LoadLiberary得到的句柄,null表示当前模块 
  lpFileName:输出参数,存放取得的文件名 
  nSize:lpFileName参数的长度

DWORD GetCurrentDirectory(
   DWORD nBufferLength, // size of directory buffer
   LPTSTR lpBuffer // directory buffer 
   ); 
函数功能
 找到当前进程的当前目录 
参数说明
  nBufferLength:lpBuffer缓冲区的长度 
  lpBuffer:指定一个预定义字串,用于装载当前目录 
返回值 
 调用成功 返回装载到lpBuffer的字节数。

使用方法:
//下面的一段代码主要是获得当前程序的运行目录(.exe)所在的目录
{
    CString path; 
    GetModuleFileName(NULL,path.GetBufferSetLength(MAX_PATH+1),MAX_PATH); 
    path.ReleaseBuffer(); 
    int pos = path.ReverseFind('\\'); 
    path = path.Left(pos); 
}

GetModuleFileName函数

WINAPI DWORD GetModuleFileName( 
HMODULE hModule,
LPWSTR lpFilename, 
DWORD nSize
);

GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾),ReleaseBuffer会把多余申请的空间释放, 归还给系统。

附加示例:

CString m_TempFile;
 //获取应用程序的全路径 
 char exeFullPath[MAX_PATH];  
 GetModuleFileName(NULL, (LPWCH)exeFullPath, MAX_PATH);  
 //将其格式化为字符串  
 m_TempFile.Format(L"%s", exeFullPath); 
 //去掉应用程序的全名(15为应用程序文件全名的长度)  
 exeFullPath[m_TempFile.GetLength()-15]='\0';  
 //得到应用程序所在路径  
 m_TempFile.Format(L"%s", exeFullPath); 
 //得到程序中文件的全路径  
 m_TempFile+="xxx.exe";

最新文章

  1. 【BZOJ-1552&3506】robotic sort&排序机械臂 Splay
  2. Effective Java 学习笔记之所有对象都通用的方法
  3. 复习sqldataread
  4. Jquery和雅虎的YQL服务实现天气预报功能!
  5. uva 10668
  6. OpenNMS架构介绍
  7. hdu 4664 Triangulation 博弈论
  8. IceMx.Mvc 我的js MVC 框架 三、动手来写一个评论模块儿
  9. STL(标准模板库)理论基础,容器,迭代器,算法
  10. IDEA 创建包和类及基本操作
  11. Mvaen仓库文件添加阿里镜像
  12. Scala知识点汇总
  13. linux 命令 — grep
  14. Iterator和ListIterator
  15. instanceof和typeof的细节
  16. db2pd工具
  17. PO模型
  18. 20165326 java实验二
  19. java常用设计模式四:观察者模式
  20. MAC层作用

热门文章

  1. (转)javascript中的this
  2. volatile用处说明
  3. Mysql INNER,LEFT ,RIGHT join的使用
  4. plsql中文乱码问题(显示问号)
  5. 学习java随笔第七篇:java的类与对象
  6. 关于word-break,word-wrap换行
  7. Linux Shell编程学习笔记——目录(附笔记资源下载)
  8. vi 替换字符串
  9. 隐藏TabBar的一些方法小结(适用与各种情况)
  10. JS DOM 来控制HTML元素