【MFC】 -002 设置当前工作目录

【MFC】 -002 设置当前工作目录


  在VC开发过程中,当需要访问本地文件路径时,可以选择绝对路径和相对路径两种方式。使用绝对路径能够使程序在开发机上能够确保可以访问到需要的文件,但缺点是部署的时候需要让部署计算机与开发计算机路径保持绝对一致,这在实际应用中很难保证。使用相对路径,可以避免在代码中出现对路径的绝对编码,通常是相对当前工作目录进行目录设置。
  但在使用相对路径时,经常出现由于不清楚当前工作目录的真实路径而导致的目录出错。因此,在程序启动时可以先设置一下当前工作目录,强迫程序将当前工作目录设置到自定义的目录中,这样可以保证相对路径使用时的正确性。
  示例代码中所做的是将exe程序所在目录设置为当前工作目录。

	//设置工作目录
	HMODULE hExe = GetModuleHandle(NULL);
	CString fName;
	TCHAR fNameBuf[MAX_PATH];
	GetModuleFileName(hExe, fNameBuf, MAX_PATH);//获取程序的绝对路径
	CString fPath = CString(fNameBuf).Left(CString(fNameBuf).ReverseFind(_T('\\')));//去掉exe文件名
	SetCurrentDirectory(fPath);//设置exe文件所在目录为当前工作目录

  去掉对MFC的依赖:

HMODULE hExe = GetModuleHandleA(NULL);
char nameBuf[MAX_PATH]={0};
GetModuleFileNameA(hExe,nameBuf,MAX_PATH);
std::string sName(nameBuf);
sName = sName.substr(0,sName.rfind('\\'));
SetCurrentDirectory(sName.c_str());
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值