Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108478
  • 博文数量: 39
  • 博客积分: 2032
  • 博客等级: 大尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-09 10:21
文章分类
文章存档

2011年(2)

2010年(22)

2009年(15)

我的朋友

分类: C/C++

2010-06-06 21:55:53

欢迎访问我的新博客(troychengspace, )

当程序需要访问一些文件的时候,通常或从程序所在的目录开始找,那么如何获取程序的当前目录就成了一个问题,另外,由于VS2005中默认使用unicode的模式,使得字符串类型很让人头疼,种类繁多的类型让人防不胜防,真不知道MFC的设计者是如何设计字符串类型的,实在是不好用,建议在开发的时候都使用CString,少用char*。ok,获取当前路径的函数如下,返回类型是CString,可以根据需要转换为不同的类型:

//获取程序所在目录
CString SmartGestureDlg::SGGetModulePath()
{
	TCHAR sgCurPath[MAX_PATH];
	ZeroMemory(sgCurPath, sizeof(sgCurPath));
	GetModuleFileName(NULL,sgCurPath,sizeof(sgCurPath)/sizeof(TCHAR));
	CString sgModulePath = sgCurPath;
	return sgModulePath.Left(sgModulePath.ReverseFind('\\'));
}

另外,给出从CString到char*的转换函数,方便使用char*的用户:

void SmartGestureDlg::CStringtoCharPointer(CString& src, char* dest, int dest_length)
{
	int len = src.GetLength();
	if (len <= dest_length)
	{
		memset(dest,0,dest_length);
		USES_CONVERSION;
		strcpy((LPSTR)dest,OLE2A(src.LockBuffer()));
	}
}

使用示例:

CString sgSavePath;
sgSavePath.Format(_T("%s%s"),SGGetModulePath(),_T("\\plugins\\SmartGesture"));
阅读(3069) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~