分类: 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"));