MFC 获得当前项目的.exe文件路径

//得到程序的路径(strTemp就是当前项目中.exe的所在目录;sPath就是xxx/.../xxx.exe)
	CString  sPath, strTemp;
	GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
	sPath.ReleaseBuffer();
	int nPos = sPath.ReverseFind('\\');
	strTemp  = sPath.Left(nPos);

ReverseFind:在一个较大的字符串中从末端开始查找某个字符
int ReverseFind( TCHAR ch ) const;
返回值:
返回此CString对象中与要求的字符匹配的最后一个字符的索引;如果没有找到需要的字符则返回-1



函数说明:

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


   GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾),ReleaseBuffer会把多余申请的空间释放, 归还给系统;但使用时需要注意以下问题: 如果要保存的字符串为abc(0结尾),则GetBuffer参数应至少为3; 如果要保存的内容不是以0结尾, 比如是读取文件数据, 则GetBuffer参数如果大于文件长度时,ReleaseBuffer参数一定要为文件长度(如果GetBuffer参数为文件长度的话不存在问题,ReleaseBuffer参数可以为默认-1)! GetBufferSetLength相对比较容易理解, 它申请一个指定长度的空间, 即使里面最终保存的字符串长度小于申请的空间长度, 也不会将多余空间释放.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值