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

📄 qsprofile.cpp

📁 接收证券行情数据接口的VC源代码,配合上mystock,可很好了解股票软件的内部源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	return m_nAccessType;
}

void CQSProfile::SetAccessType( int nAccessType )
{
	m_nAccessType	=	nAccessType;

	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	CString sTemp;
	sTemp.Format( "%d", m_nAccessType );
	::WritePrivateProfileString( szProfile_Proxy, szProfile_AccessType, sTemp, sFileName );
}

int CQSProfile::GetProxyType( )
{
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	m_nProxyType = ::GetPrivateProfileInt( szProfile_Proxy, szProfile_ProxyType, 3, sFileName );
	return m_nProxyType;
}

void CQSProfile::SetProxyType( int nProxyType )
{
	m_nProxyType	=	nProxyType;
	
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	CString sTemp;
	sTemp.Format( "%d", m_nProxyType );
	::WritePrivateProfileString( szProfile_Proxy, szProfile_ProxyType, sTemp, sFileName );
}

CString	CQSProfile::GetProxyAddress( )
{
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	char szAddress[CProxySocket::MaxLenAddress+2];
	memset( szAddress, 0, sizeof(szAddress) );
	::GetPrivateProfileString( szProfile_Proxy, szProfile_ProxyAddress, "", szAddress, sizeof(szAddress)-2, sFileName );
	m_strProxyAddress	=	szAddress;
	return m_strProxyAddress;
}

void CQSProfile::SetProxyAddress( LPCTSTR lpszProxyAddress )
{
	m_strProxyAddress	=	lpszProxyAddress;
	
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	::WritePrivateProfileString( szProfile_Proxy, szProfile_ProxyAddress, m_strProxyAddress, sFileName );
}

WORD CQSProfile::GetProxyPort( )
{
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	m_nProxyPort = ::GetPrivateProfileInt( szProfile_Proxy, szProfile_ProxyPort, 80, sFileName );
	return m_nProxyPort;
}

void CQSProfile::SetProxyPort( WORD nPort )
{
	m_nProxyPort	=	nPort;
	
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	CString sTemp;
	sTemp.Format( "%d", m_nProxyPort );
	::WritePrivateProfileString( szProfile_Proxy, szProfile_ProxyPort, sTemp, sFileName );
}

CString	CQSProfile::GetProxyUser( )
{
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	char szUser[CProxySocket::MaxLenUser+2];
	memset( szUser, 0, sizeof(szUser) );
	::GetPrivateProfileString( szProfile_Proxy, szProfile_ProxyUser, "", szUser, sizeof(szUser)-2, sFileName );
	m_strProxyUser		=	szUser;
	return m_strProxyUser;
}

void CQSProfile::SetProxyUser( LPCTSTR lpszProxyUser )
{
	m_strProxyUser	=	lpszProxyUser;

	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	::WritePrivateProfileString( szProfile_Proxy, szProfile_ProxyUser, m_strProxyUser, sFileName );
}

CString	CQSProfile::GetProxyPasswd( )
{
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	char szPasswd[CProxySocket::MaxLenPasswd+2];
	memset( szPasswd, 0, sizeof(szPasswd) );
	::GetPrivateProfileString( szProfile_Proxy, szProfile_ProxyPasswd, "", szPasswd, sizeof(szPasswd)-2, sFileName );
	m_strProxyPasswd	=	szPasswd;
	return m_strProxyPasswd;
}

void CQSProfile::SetProxyPasswd( LPCTSTR lpszProxyPasswd )
{
	m_strProxyPasswd	=	lpszProxyPasswd;
	
	CString sFileName = GetWorkDirectory() + szQuoteServerProfileName;
	::WritePrivateProfileString( szProfile_Proxy, szProfile_ProxyPasswd, m_strProxyPasswd, sFileName );
}

static CString QSP_AfxGetFileDirectory( CString strPathName, CString strDefault )
{
	if( strPathName.IsEmpty() )
		return strDefault;

	CString	strResult	=	strPathName;
	if( strResult.GetLength() > 0 )
	{
		int	nIndex	=	strResult.ReverseFind( '\\' );
		if( -1 == nIndex )
			nIndex	=	strResult.ReverseFind( '/' );
		if( -1 == nIndex )
			strResult = strDefault;
		else
			strResult	=	strResult.Left( nIndex );
	}

	if( strResult.GetLength() <= 0 )
		return strDefault;

	int	nLen	=	strResult.GetLength();
	if( nLen > 0 && strResult[nLen-1] != '\\' && strResult[nLen-1] != '/' )
		strResult	+=	"\\";

	return strResult;
}

CString CQSProfile::GetWorkDirectory( )
{
	if( m_strWorkDirectory.IsEmpty() )
	{
		TCHAR szLongPathName[_MAX_PATH];
		::GetModuleFileName( AfxGetModuleHandle(), szLongPathName, _MAX_PATH);
		m_strWorkDirectory	=	QSP_AfxGetFileDirectory( szLongPathName, "" );
	}
	return m_strWorkDirectory;
}

int CQSProfile::GetCurrentServerIndex()
{
	if( m_nCurrentServer < 0 || m_nCurrentServer >= m_aQuoteServers.GetSize() )
		m_nCurrentServer = 0;
	if( 0 == m_aQuoteServers.GetSize() )
		m_nCurrentServer = -1;
	return m_nCurrentServer;
}

CQuoteServer CQSProfile::GetCurrentServer()
{
	CQuoteServer qs;
	int nIndex = GetCurrentServerIndex();
	if( nIndex >= 0 && nIndex < m_aQuoteServers.GetSize() )
		qs = m_aQuoteServers.ElementAt(nIndex);
	return qs;
}

void CQSProfile::SetCurrentServer( int nServer )
{
	m_nCurrentServer = nServer;
}

BOOL CQSProfile::GetCycleConnect()
{
	return m_bCycleConnect;
}

void CQSProfile::SetCycleConnect( BOOL bCycleConnect )
{
	m_bCycleConnect = bCycleConnect;
}

CQuoteServerArray & CQSProfile::GetQuoteServers( )
{
	return m_aQuoteServers;
}

int CQSProfile::AddQuoteServers( CQuoteServerArray & aNew )
{
	int nCount = 0;
	for( int i=0; i<aNew.GetSize(); i++ )
	{
		CQuoteServer & qs = aNew.ElementAt(i);
		for( int j=0; j<m_aQuoteServers.GetSize(); j++ )
		{
			if( 0 == qs.m_strName.CompareNoCase(m_aQuoteServers.ElementAt(j).m_strName)
				|| 0 == qs.m_strAddress.CompareNoCase(m_aQuoteServers.ElementAt(j).m_strAddress) )
			{
				m_aQuoteServers.SetAt( j, qs );
				nCount ++;
				break;
			}
		}
		if( j == m_aQuoteServers.GetSize() )
		{
			m_aQuoteServers.Add( qs );
			nCount ++;
		}
	}
	return nCount;
}

void SerializeAlias( CArchive & ar, CAliasArray & aAliases )
{
	char szFileMagic[]		=	"NETTSALIAS";
	DWORD	dwFileVersion	=	0x20040825;

	if( ar.IsStoring() )
	{
		ar.WriteString( szFileMagic );
		ar << dwFileVersion;

		ar << (int)aAliases.GetSize();
		for( int i=0; i<aAliases.GetSize(); i++ )
		{
			CAlias & a = aAliases.ElementAt(i);
			ar << a.m_strName;
			ar << a.m_strValue;
		}
	}
	else
	{
		TCHAR buffer[64];
		memset( buffer, 0, sizeof(buffer) );
		ar.ReadString( buffer, strlen(szFileMagic) );
		if( 0 != strncmp( szFileMagic, buffer, strlen(szFileMagic) ) )
			return;

		DWORD	dwVer;				
		ar >> dwVer;
		if( dwVer > dwFileVersion )
			return;

		int size;
		ar >> size;
		if( size < 0 || size > 10000 )	// too big
			return;

		aAliases.SetSize( 0, size+2 );
		for( int i=0; i<size; i++ )
		{
			CAlias a;
			ar >> a.m_strName;
			ar >> a.m_strValue;
			aAliases.Add( a );
		}
	}
}

CString GetNetTSAliasFileName( )
{
	TCHAR buffer[MAX_PATH];
	memset( buffer, 0, sizeof(buffer) );
	GetWindowsDirectory(buffer, sizeof(buffer));
	buffer[sizeof(buffer)-1] = 0;
	CString string = buffer;
	int nLen = string.GetLength();
	if( nLen > 0 && '\\' != string[nLen-1] )
		string	+=	'\\';
	return string + "NetTSAlias";
}

BOOL CQSProfile::StoreAliases( CAliasArray & aNew )
{
	m_aAliases.SetSize( 0, aNew.GetSize() + 2 );
	for( int i=0; i<aNew.GetSize(); i++ )
	{
		CAlias & alias = aNew.ElementAt(i);
		m_aAliases.Add( alias );
	}

	CFile file;
	if( file.Open( GetNetTSAliasFileName(), CFile::modeWrite | CFile::modeCreate ) )
	{
		CArchive ar( &file, CArchive::store );
		SerializeAlias( ar, m_aAliases );
		ar.Close();
		file.Close();
		return TRUE;
	}
	return FALSE;
}

BOOL CQSProfile::LoadAliases( )
{
	CFile file;
	if( file.Open( GetNetTSAliasFileName(), CFile::modeRead ) )
	{
		DWORD dwLen = (DWORD)file.GetLength();
		if( 0 == dwLen || dwLen > 102400 )	// too big
		{
			file.Close();
			return FALSE;
		}
		
		CArchive ar( &file, CArchive::load );
		SerializeAlias( ar, m_aAliases );
		ar.Close();
		file.Close();
		return TRUE;
	}
	return FALSE;
}

CString CQSProfile::GetAlias( LPCTSTR lpszName )
{
	for( int i=0; i<m_aAliases.GetSize(); i++ )
	{
		CAlias & alias = m_aAliases.ElementAt(i);
		if( 0 == alias.m_strName.CompareNoCase(lpszName) )
			return alias.m_strValue;
	}
	return lpszName;
}

⌨️ 快捷键说明

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