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

📄 selectsrvdlg.cpp

📁 接收证券行情数据接口的VC源代码,配合上mystock,可很好了解股票软件的内部源代码
💻 CPP
字号:
// SelectSrvDlg.cpp : implementation file
//

#include "stdafx.h"
#include "SelectSrvDlg.h"
#include "ProxySetDlg.h"
#include "EditSrvDlg.h"
#include "TWSocket.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSelectSrvDlg dialog


CSelectSrvDlg::CSelectSrvDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSelectSrvDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSelectSrvDlg)
	m_strUser = _T("");
	m_strPasswd = _T("");
	m_bSavePasswd = FALSE;
	//}}AFX_DATA_INIT
}

void CSelectSrvDlg::SetupComboServer( )
{
	m_comboServer.ResetContent();

	UINT nSelectedItem = 0;
	int nCurrentServer = AfxGetQSProfile().GetCurrentServerIndex();
	CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
	for( int i=0; i<aServers.GetSize(); i++ )
	{
		CQuoteServer & qs = aServers.ElementAt(i);
		int nItem = m_comboServer.AddString( qs.m_strName );
		m_comboServer.SetItemData( nItem, i );
		if( i == nCurrentServer )
			nSelectedItem = nItem;
	}

	m_comboServer.SetCurSel( nSelectedItem );
}

void CSelectSrvDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSelectSrvDlg)
	DDX_Control(pDX, IDOK, m_btnOK);
	DDX_Control(pDX, IDC_COMBO_SERVER, m_comboServer);
	DDX_Text(pDX, IDC_EDIT_USER, m_strUser);
	DDV_MaxChars(pDX, m_strUser, 128);
	DDX_Text(pDX, IDC_EDIT_PASSWD, m_strPasswd);
	DDV_MaxChars(pDX, m_strPasswd, 128);
	DDX_Check(pDX, IDC_CHECK_SAVEPASSWD, m_bSavePasswd);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSelectSrvDlg, CDialog)
	//{{AFX_MSG_MAP(CSelectSrvDlg)
	ON_CBN_SELCHANGE(IDC_COMBO_SERVER, OnSelchangeComboServer)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_MODIFY, OnModify)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_BN_CLICKED(IDC_PROXY_SET, OnProxySet)
	ON_WM_CLOSE()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSelectSrvDlg message handlers

int CSelectSrvDlg::DoModal() 
{
	HINSTANCE hInstanceOld = AfxGetResourceHandle();
	AfxSetResourceHandle( AfxGetModuleHandle() );
	
	int nRet = CDialog::DoModal();
	
	AfxSetResourceHandle( hInstanceOld );
	return nRet;
}

BOOL CSelectSrvDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	AfxGetQSProfile().LoadProfile();

	SetupComboServer( );
	OnSelchangeComboServer( );

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSelectSrvDlg::OnSelchangeComboServer() 
{
	CQuoteServer qs;
	int nSel = m_comboServer.GetCurSel();
	if( CB_ERR != nSel )
	{
		int i = m_comboServer.GetItemData(nSel);
		CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
		if( i >= 0 && i < aServers.GetSize() )
			qs = aServers.ElementAt(i);
	}

	m_strUser = qs.m_strUser;
	m_strPasswd = qs.m_strPasswd;
	m_bSavePasswd = qs.m_bSavePasswd;
	if( !m_bSavePasswd )
		m_strPasswd.Empty();
	UpdateData( FALSE );
}

void CSelectSrvDlg::OnAdd() 
{
	CEditSrvDlg dlg;
	if( IDOK == dlg.DoModal() )
	{
		CQuoteServer qs;
		dlg.GetQuoteServer( qs );
		int nNew = AfxGetQSProfile().GetQuoteServers().Add( qs );
		AfxGetQSProfile().SetCurrentServer( nNew );

		SetupComboServer( );
		OnSelchangeComboServer( );

		AfxGetQSProfile().StoreProfile();
	}
}

void CSelectSrvDlg::OnModify() 
{
	CQuoteServer qs;
	int nSel = m_comboServer.GetCurSel();
	if( CB_ERR == nSel )
	{
		AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_NOSELECTED) );
		return;
	}

	int i = m_comboServer.GetItemData(nSel);
	CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
	if( i >= 0 && i < aServers.GetSize() )
		qs = aServers.ElementAt(i);

	CEditSrvDlg dlg;
	dlg.SetQuoteServer( qs );
	if( IDOK == dlg.DoModal() )
	{
		dlg.GetQuoteServer( qs );
		if( i >= 0 && i < aServers.GetSize() )
		{
			aServers.SetAt(i,qs);
			AfxGetQSProfile().SetCurrentServer(i);
		}

		SetupComboServer( );
		OnSelchangeComboServer( );

		AfxGetQSProfile().StoreProfile();
	}
}

void CSelectSrvDlg::OnDelete() 
{
	int nSel = m_comboServer.GetCurSel();
	if( CB_ERR == nSel )
	{
		AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_NOSELECTED) );
		return;
	}

	if( IDYES != AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_DELCONFIRM), MB_YESNO ) )
		return;

	int i = m_comboServer.GetItemData(nSel);
	CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
	if( i >= 0 && i < aServers.GetSize() )
	{
		aServers.RemoveAt(i);
		AfxGetQSProfile().SetCurrentServer(i);
	}

	SetupComboServer( );
	OnSelchangeComboServer( );

	AfxGetQSProfile().StoreProfile();
}

void CSelectSrvDlg::OnProxySet() 
{
	CProxySetDlg	dlg;
	dlg.DoModal();
}

void CSelectSrvDlg::OnOK() 
{
	m_btnOK.EnableWindow( FALSE );

	UpdateData( );

	int nSel = m_comboServer.GetCurSel();
	if( CB_ERR == nSel )
	{
		AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_NOSELECTED) );
		m_btnOK.EnableWindow( TRUE );
		return;
	}

	int i = m_comboServer.GetItemData(nSel);
	CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
	if( i >= 0 && i < aServers.GetSize() )
	{
		AfxGetQSProfile().SetCurrentServer(i);
		CQuoteServer & qs = aServers.ElementAt(i);

		// Save
		qs.m_strUser = m_strUser;
		qs.m_strPasswd = m_strPasswd;
		qs.m_bSavePasswd = m_bSavePasswd;
		if( !qs.m_bSavePasswd )
			qs.m_strPasswd.Empty();

		// Load
		m_strAddress = qs.m_strAddress;
		m_nPort = qs.m_nPort;
	}
	AfxGetQSProfile().StoreProfile();

	// Connect
	BOOL bSuccess = CTWSocket::GetInstance().BeginWorking( AfxGetQSProfile().GetAlias(GetServer()),
				GetPort(), GetUser(), GetPasswd() );
	if( !bSuccess )
	{
		AfxMessageBox( CTWSocket::GetInstance().GetLastErrorString(), MB_OK );
		return;
	}

	CDialog::OnOK();
}


⌨️ 快捷键说明

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