⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inifile.cpp

📁 在wince中定时捕获桌面图片信息
💻 CPP
字号:
// IniFile.cpp: implementation of the CIniFile class.
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "IniFile.h"
//#include "fstream.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

/////////////////////////////////////////////////////////////////////
// Construction/Destruction
/////////////////////////////////////////////////////////////////////

//default constructor
CIniFile::CIniFile()
{

}

//default destructor
CIniFile::~CIniFile()
{

}

/////////////////////////////////////////////////////////////////////
// Public Functions
/////////////////////////////////////////////////////////////////////

//sets path of ini file to read and write from
void CIniFile::SetPath(CString Path)
{
	FilePath = Path;
	if(Path.Right(2)!="\\") FilePath+="\\";
}

//open ini file for read
BOOL CIniFile::OpenIniFileForRead()
{
	BOOL bExist=IniFile.Open(FilePath+FileName,CFile::modeRead); 
	return bExist;
}

//open ini file for write
BOOL CIniFile::OpenIniFileForWrite()
{
	BOOL bExist=IniFile.Open(FilePath+FileName,CFile::modeCreate | CFile::modeWrite);
	return bExist;
}

void CIniFile::CloseIniFile()
{
	IniFile.Close();
}

//find Section in ini file
BOOL CIniFile::FindSection(CString Section)
{
	IniFile.SeekToBegin();
	CString str;
	BOOL bFind=FALSE;
// 	BOOL bEnd=IniFile.ReadString(str);
// 	while(!bFind && bEnd)
// 	{
// 		if(str.Find(Section)>=0)
// 		{
// 			bFind=TRUE;
// 			break;
// 		}
// 		bEnd=IniFile.ReadString(str);
// 	}
	return bFind;
}

//write Section to ini file
BOOL CIniFile::WriteSection(CString Section)
{
	CFileStatus status;
	if(IniFile.GetStatus(status))
	{
//		IniFile.WriteString("["+Section+"]\n");
		return TRUE;
	}
	else
		return FALSE;
}

//write Item and value of int to ini file
BOOL CIniFile::WriteItemInt(CString Item,int Value)
{
	CFileStatus status;
	if(IniFile.GetStatus(status))
	{
		CString str;
		str.Format(_T("%d"),Value);
		str=Item+"="+str+"\n";
//		IniFile.WriteString(str);
		return TRUE;
	}
	else
		return FALSE;
}

//write Item and value of CString to ini file
BOOL CIniFile::WriteItemString(CString Item, CString Value)
{
	CFileStatus status;
	if(IniFile.GetStatus(status))
	{
	//	IniFile.WriteString(Item+"="+Value+"\n");
		return TRUE;
	}
	else
		return FALSE;
}

//read value of int from ini file
BOOL CIniFile::GetItemInt(CString Section, CString Item, int &Value)
{
	CFileStatus status;
	if(IniFile.GetStatus(status))
	{
		if(FindSection(Section))
		{
			CString buf,sub;
			BOOL bFind=FALSE;
			BOOL bEnd;//=IniFile.ReadString(buf);
			while(!bFind && bEnd)
			{
				sub=buf.Left(buf.Find(_T("=")));
				if(buf.Find(_T("["))<0 && !sub.IsEmpty() && sub.Find(Item)>=0)
				{
					sub=buf.Right(buf.GetLength()-buf.Find(_T("="))-1);
					sub=GetValueString(sub);
					char * cCount;
					memset(cCount, 0,128);//这里的128如果改成256会出错,程序要关掉才能正常,浪费半个多小时
					WideCharToMultiByte( CP_ACP, 0, sub, -1, cCount, 128, NULL, NULL);	
				
					Value=atoi(cCount);
					bFind=TRUE;
					break;
				}
				//bEnd=IniFile.ReadString(buf);
			}
			return bFind;
		}
		else
			return FALSE;
	}
	else
		return FALSE;
}

//read value of CString from ini file
BOOL CIniFile::GetItemString(CString Section, CString Item, CString &Value)
{
	CFileStatus status;
	if(IniFile.GetStatus(status))
	{
		if(FindSection(Section))
		{
			CString buf,sub;
			BOOL bFind=FALSE;
			BOOL bEnd;//=IniFile.ReadString(buf);
			while(!bFind && bEnd)
			{
				sub=buf.Left(buf.Find(_T("=")));
				if(buf.Find(_T("["))<0 && !sub.IsEmpty() && sub.Find(Item)>=0)
				{
					sub=buf.Right(buf.GetLength()-buf.Find(_T("="))-1);
					Value=GetValueString(sub);
					bFind=TRUE;
					break;
				}
			//	bEnd=IniFile.ReadString(buf);
			}
			return bFind;
		}
		else
			return FALSE;
	}
	else
		return FALSE;
}

//get value(CString) from str
CString CIniFile::GetValueString(CString str)
{
	int length=str.GetLength();
	BOOL bSpace=TRUE;
	while(length && bSpace)
	{
		if(str[0]==' ')
			str=str.Right(--length);
		else
			bSpace=FALSE;
	}
	bSpace=TRUE;
	while(length && bSpace)
	{
		if(str[length-1]==' ')
			str=str.Left(--length);
		else
			bSpace=FALSE;
	}
	return str;
}

//write any string to ini file,"\n"
BOOL CIniFile::WriteString(CString str)
{
	CFileStatus status;
	if(IniFile.GetStatus(status))
	{
		//IniFile.WriteString(str);
		return TRUE;
	}
	else
		return FALSE;
}

//sets name of ini file to read and write from
void CIniFile::SetName(CString Name)
{
	FileName=Name;
}

BOOL CIniFile::deleteFile()
{
	IniFile.Close();
	IniFile.Remove(FilePath+FileName);
	return TRUE;
}

CString CIniFile::getPath()
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	TCHAR szAppName[MAX_PATH];		// 父目录的路径, 最后不带"\"
	TCHAR *pLastSlash;
	char szFileName[_MAX_PATH];
	memset(szFileName,0,128);

	GetModuleFileName(NULL, szAppName, MAX_PATH);
	pLastSlash = _tcsrchr(szAppName, _T('\\'));	// 截掉文件名,只保留路径
	if(pLastSlash!=NULL)	*pLastSlash=_T('\0');
	WideCharToMultiByte(CP_ACP, 0, szAppName, -1, szFileName, sizeof(szFileName), NULL, NULL);
	return szFileName;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -