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

📄 gsconfig.cpp

📁 网络泡泡被.net管理
💻 CPP
字号:
 // Config.cpp: implementation of the CConfig class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Gslib_internal.h"
#include "GsConfig.h"

char	strTempBuffer[1000];

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

CConfig::CConfig()
{
	strcpy(m_szIniName, "");
}

CConfig::CConfig(char const *szfile)
{
	assert(NULL!=szfile);
	strcpy(m_szIniName, szfile);
}

CConfig::~CConfig()
{

}

void CConfig::SetINIFile(char const *szfile)
{
	strcpy(m_szIniName, szfile);
}

//-----------------------------------------------------------------------------
// Name: 
// Desc: 
//-----------------------------------------------------------------------------
DWORD CConfig::GetHex( LPCSTR strSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    DWORD dwResult = 0;
    GetPrivateProfileString( strSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
    if( _stscanf( szBuffer, TEXT("0x%x"), &dwResult ) != 1 )
    {
        dwResult = 0;
    }

    return dwResult;
}




//-----------------------------------------------------------------------------
// Name: 
// Desc: 
//-----------------------------------------------------------------------------
float CConfig::GetFloat( LPCSTR strSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    GetPrivateProfileString( strSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
    return (float)_tcstod(szBuffer,TEXT('\0'));
}




//-----------------------------------------------------------------------------
// Name: 
// Desc: 
//-----------------------------------------------------------------------------
long CConfig::GetLong( LPCSTR strSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    GetPrivateProfileString( strSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
    return _tcstol(szBuffer,TEXT('\0'),10);  
}


GPOINT CConfig::GetPoint( LPCSTR szSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    GetPrivateProfileString( szSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
	TCHAR *	sz = szBuffer;
	GPOINT pt(0,0);
	pt.x	= _tcstol(sz,&sz,10);
	if(*(sz+1)!=0)
		pt.y	= _tcstol(sz+1,&sz,10);
//    return GPOINT(_tcstol(sz,&sz,10), _tcstol(sz+1,&sz,10)); 
	return pt;
}
GRECT CConfig::GetRect( LPCSTR szSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    GetPrivateProfileString( szSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
	TCHAR *	sz = szBuffer;
	GRECT	rc(0,0,0,0);
    rc.left		= _tcstol(sz,&sz,10);
	if(*(sz+1)!=0)
		rc.top		= _tcstol(sz+1,&sz,10);
	if(*(sz+1)!=0)
		rc.right	= _tcstol(sz+1,&sz,10);
	if(*(sz+1)!=0)
		rc.bottom	= _tcstol(sz+1,&sz,10);
	return rc;
}

GVECTOR CConfig::GetVector( LPCSTR szSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    GetPrivateProfileString( szSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
	TCHAR *	sz = szBuffer;
	GVECTOR vt(0,0,0);
//	GRECT	rc(0,0,0,0);
    vt.x		= (float)_tcstod(szBuffer,&sz);
	if(*(sz+1)!=0)
		vt.y		= (float)_tcstod(sz+1,&sz);
	if(*(sz+1)!=0)
		vt.z		= (float)_tcstod(sz+1,&sz);
	return vt;
}

//-----------------------------------------------------------------------------
// Name: 
// Desc: 
//-----------------------------------------------------------------------------
void CConfig::GetString( LPTSTR szValue, UINT nChar, LPCSTR strSection, LPCSTR szName, LPCSTR szDefault )
{
    GetPrivateProfileString( strSection, szName, szDefault, 
                             szValue, nChar, m_szIniName ); 
}

//KEY CConfig::GetString( LPCSTR strSection, LPCSTR szName, LPCSTR szDefault )
//{
//	char str[1000];
//    GetPrivateProfileString( strSection, szName, szDefault, 
//                             str, 1000, m_szIniName ); 
//	return KEY(str);
//}
const char* CConfig::GetString( LPCSTR strSection, LPCSTR szName, LPCSTR szDefault )
{
//	char str[1000];
    GetPrivateProfileString( strSection, szName, szDefault, 
                             strTempBuffer, 1000, m_szIniName ); 
	return strTempBuffer;
}


BOOL CConfig::WriteFloat( float value, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%f", value);
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}


BOOL CConfig::WriteLong( LONG value, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%d", value);
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}

BOOL  CConfig::WritePoint( GPOINT value, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%d,%d", value.x, value.y);
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}

BOOL  CConfig::WriteRect( GRECT value, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%d,%d,%d,%d", value.left, value.top, value.right, value.bottom);
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}

BOOL  CConfig::WriteVector( GVECTOR vector, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%f,%f,%f", vector.x, vector.y, vector.z);
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}


BOOL CConfig::WriteString( const LPCSTR szValue, LPCSTR szSection, LPCSTR szName )
{
	return WritePrivateProfileString( szSection, szName, szValue, m_szIniName );
}

BOOL CConfig::WriteHex( DWORD value, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%x", value);
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}



UINT CConfig::GetBinary(LPCSTR lpszSection, LPCSTR lpszEntry,
	LPBYTE pData, UINT nBytes)
{
	assert(lpszSection != NULL);
	assert(lpszEntry != NULL);
	assert(pData != NULL);
	assert(nBytes != 0);

	TCHAR* str	= new TCHAR[nBytes*2+1];
	strcpy(str, "");

	int i;
//	UINT nPart	= nBytes*2/1024 + 1; // 1k every part
//	TCHAR szGet[1025];
//	TCHAR subKey[256];
//	for(i=0; i<nPart; i++)
//	{
//		sprintf(subKey,"%s@@@%d", lpszEntry, i);
//		GetString(szGet, 1025, lpszSection, subKey, NULL);
//		//szGet[1024]=0;
//		strcat(str, szGet);
//	}

	GetString((LPTSTR)str, nBytes*2+1, lpszSection, lpszEntry, NULL);
	int nLen = strlen(str);
	if (nLen==0)
	{
		SAFE_DELETE_ARRAY(str);
		return 0;
	}
	assert(nLen%2 == 0);
	for (i=0;i<nLen;i+=2)
	{
		(pData)[i/2] = (BYTE)
		(((str[i+1] - 'A') << 4) + (str[i] - 'A'));
	}
	SAFE_DELETE_ARRAY(str);
	return nLen/2;
}


BOOL CConfig::WriteBinary(LPCSTR lpszSection, LPCSTR lpszEntry,
	LPBYTE pData, UINT nBytes)
{
	assert(lpszSection != NULL);


	// convert to string and write out
	LPTSTR lpsz = new TCHAR[nBytes*2+1];
	for (UINT i = 0; i < nBytes; i++)
	{
		lpsz[i*2] = (TCHAR)((pData[i] & 0x0F) + 'A'); //low nibble
		lpsz[i*2+1] = (TCHAR)(((pData[i] >> 4) & 0x0F) + 'A'); //high nibble
	}
	lpsz[i*2] = 0;
	BOOL bResult = true;

//	UINT nPart	= nBytes*2/1024 + 1; // 1k every part
//	TCHAR szOut[1025];
//	TCHAR subKey[256];
//	for(i=0; i<nPart; i++)
//	{
//		int a = (i==nPart-1)? (nBytes*2)%1024 : 1024;
//		strncpy(szOut,lpsz + i*1024, a);
//		szOut[a]=0;
//		sprintf(subKey,"%s@@@%d", lpszEntry, i);
//		if(false==WriteString(szOut, lpszSection, subKey))
//			bResult=false;
//	}
	bResult	= WriteString(lpsz, lpszSection, lpszEntry);
	delete[] lpsz;
	return bResult;
}




BOOL CConfig::GetBOOL( LPCSTR szSection, LPCSTR szName, LPCSTR szDefault )
{
	TCHAR	szGet[10];
    GetPrivateProfileString( szSection, szName, szDefault, 
                             szGet, 10, m_szIniName ); 
	_strlwr(szGet);
	if("true"==std::string(szGet))
		return TRUE;
	return FALSE;
}

BOOL CConfig::WriteBOOL( BOOL bValue, LPCSTR szSection, LPCSTR szName )
{
	return WritePrivateProfileString( szSection, szName, bValue ? "true" : "false", m_szIniName );
}


VOID CConfig::GetFont( GSFONT &font, LPCSTR szSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    GetPrivateProfileString( szSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
	TCHAR *	sz = szBuffer;
	strcpy(font.strFont, szBuffer);
	sz = strchr(font.strFont, ',');
	if(sz)
	{
		sz[0] = 0;
		sz[1] = 0;
	}
	sz	= szBuffer + strlen(font.strFont) + 1;
	font.size	= _tcstol(sz,&sz,10);
	if(*(sz+1)!=0)
		font.charset	= _tcstol(sz+1,&sz,10);
	if(*(sz+1)!=0)
		font.Italic	= _tcstol(sz+1,&sz,10);
	if(*(sz+1)!=0)
		font.Underline	= _tcstol(sz+1,&sz,10);
	if(*(sz+1)!=0)
		font.StrikeOut	= _tcstol(sz+1,&sz,10);
}


BOOL CConfig::WriteFont( GSFONT font, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%s,%d,%d,%d,%d,%d", font.strFont, font.size, font.charset, font.Italic, font.Underline, font.StrikeOut);
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}


D3DCOLOR CConfig::GetColor( LPCSTR szSection, LPCSTR szName, LPCSTR szDefault )
{
    TCHAR szBuffer[MAX_PATH];
    GetPrivateProfileString( szSection, szName, szDefault, 
                             szBuffer, sizeof(szBuffer), m_szIniName ); 
	TCHAR *	sz = szBuffer;
	int r,g,b,a;
    a		= _tcstol(sz,&sz,10);
	if(*(sz+1)!=0)
		r		= _tcstol(sz+1,&sz,10);
	if(*(sz+1)!=0)
		g	= _tcstol(sz+1,&sz,10);
	if(*(sz+1)!=0)
		b	= _tcstol(sz+1,&sz,10);
	return RGBA_MAKE(r, g, b, a);
}

BOOL  CConfig::WriteColor( D3DCOLOR color, LPCSTR szSection, LPCSTR szName )
{
    TCHAR szBuffer[MAX_PATH];
	sprintf(szBuffer, "%d,%d,%d,%d", RGBA_GETALPHA(color), RGBA_GETRED(color), RGBA_GETGREEN(color), RGBA_GETBLUE(color));
	return WritePrivateProfileString( szSection, szName, szBuffer, m_szIniName );
}

⌨️ 快捷键说明

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