SelectSrvDlg.cpp
上传用户:nameszq
上传日期:2014-08-12
资源大小:336k
文件大小:6k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. // SelectSrvDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SelectSrvDlg.h"
  5. #include "ProxySetDlg.h"
  6. #include "EditSrvDlg.h"
  7. #include "TWSocket.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CSelectSrvDlg dialog
  15. CSelectSrvDlg::CSelectSrvDlg(CWnd* pParent /*=NULL*/)
  16. : CDialog(CSelectSrvDlg::IDD, pParent)
  17. {
  18. //{{AFX_DATA_INIT(CSelectSrvDlg)
  19. m_strUser = _T("");
  20. m_strPasswd = _T("");
  21. m_bSavePasswd = FALSE;
  22. //}}AFX_DATA_INIT
  23. }
  24. void CSelectSrvDlg::SetupComboServer( )
  25. {
  26. m_comboServer.ResetContent();
  27. UINT nSelectedItem = 0;
  28. int nCurrentServer = AfxGetQSProfile().GetCurrentServerIndex();
  29. CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
  30. for( int i=0; i<aServers.GetSize(); i++ )
  31. {
  32. CQuoteServer & qs = aServers.ElementAt(i);
  33. int nItem = m_comboServer.AddString( qs.m_strName );
  34. m_comboServer.SetItemData( nItem, i );
  35. if( i == nCurrentServer )
  36. nSelectedItem = nItem;
  37. }
  38. m_comboServer.SetCurSel( nSelectedItem );
  39. }
  40. void CSelectSrvDlg::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CDialog::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CSelectSrvDlg)
  44. DDX_Control(pDX, IDOK, m_btnOK);
  45. DDX_Control(pDX, IDC_COMBO_SERVER, m_comboServer);
  46. DDX_Text(pDX, IDC_EDIT_USER, m_strUser);
  47. DDV_MaxChars(pDX, m_strUser, 128);
  48. DDX_Text(pDX, IDC_EDIT_PASSWD, m_strPasswd);
  49. DDV_MaxChars(pDX, m_strPasswd, 128);
  50. DDX_Check(pDX, IDC_CHECK_SAVEPASSWD, m_bSavePasswd);
  51. //}}AFX_DATA_MAP
  52. }
  53. BEGIN_MESSAGE_MAP(CSelectSrvDlg, CDialog)
  54. //{{AFX_MSG_MAP(CSelectSrvDlg)
  55. ON_CBN_SELCHANGE(IDC_COMBO_SERVER, OnSelchangeComboServer)
  56. ON_BN_CLICKED(IDC_ADD, OnAdd)
  57. ON_BN_CLICKED(IDC_MODIFY, OnModify)
  58. ON_BN_CLICKED(IDC_DELETE, OnDelete)
  59. ON_BN_CLICKED(IDC_PROXY_SET, OnProxySet)
  60. ON_WM_CLOSE()
  61. ON_WM_DESTROY()
  62. //}}AFX_MSG_MAP
  63. END_MESSAGE_MAP()
  64. /////////////////////////////////////////////////////////////////////////////
  65. // CSelectSrvDlg message handlers
  66. int CSelectSrvDlg::DoModal() 
  67. {
  68. HINSTANCE hInstanceOld = AfxGetResourceHandle();
  69. AfxSetResourceHandle( AfxGetModuleHandle() );
  70. int nRet = CDialog::DoModal();
  71. AfxSetResourceHandle( hInstanceOld );
  72. return nRet;
  73. }
  74. BOOL CSelectSrvDlg::OnInitDialog() 
  75. {
  76. CDialog::OnInitDialog();
  77. AfxGetQSProfile().LoadProfile();
  78. SetupComboServer( );
  79. OnSelchangeComboServer( );
  80. return TRUE;  // return TRUE unless you set the focus to a control
  81.               // EXCEPTION: OCX Property Pages should return FALSE
  82. }
  83. void CSelectSrvDlg::OnSelchangeComboServer() 
  84. {
  85. CQuoteServer qs;
  86. int nSel = m_comboServer.GetCurSel();
  87. if( CB_ERR != nSel )
  88. {
  89. int i = m_comboServer.GetItemData(nSel);
  90. CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
  91. if( i >= 0 && i < aServers.GetSize() )
  92. qs = aServers.ElementAt(i);
  93. }
  94. m_strUser = qs.m_strUser;
  95. m_strPasswd = qs.m_strPasswd;
  96. m_bSavePasswd = qs.m_bSavePasswd;
  97. if( !m_bSavePasswd )
  98. m_strPasswd.Empty();
  99. UpdateData( FALSE );
  100. }
  101. void CSelectSrvDlg::OnAdd() 
  102. {
  103. CEditSrvDlg dlg;
  104. if( IDOK == dlg.DoModal() )
  105. {
  106. CQuoteServer qs;
  107. dlg.GetQuoteServer( qs );
  108. int nNew = AfxGetQSProfile().GetQuoteServers().Add( qs );
  109. AfxGetQSProfile().SetCurrentServer( nNew );
  110. SetupComboServer( );
  111. OnSelchangeComboServer( );
  112. AfxGetQSProfile().StoreProfile();
  113. }
  114. }
  115. void CSelectSrvDlg::OnModify() 
  116. {
  117. CQuoteServer qs;
  118. int nSel = m_comboServer.GetCurSel();
  119. if( CB_ERR == nSel )
  120. {
  121. AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_NOSELECTED) );
  122. return;
  123. }
  124. int i = m_comboServer.GetItemData(nSel);
  125. CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
  126. if( i >= 0 && i < aServers.GetSize() )
  127. qs = aServers.ElementAt(i);
  128. CEditSrvDlg dlg;
  129. dlg.SetQuoteServer( qs );
  130. if( IDOK == dlg.DoModal() )
  131. {
  132. dlg.GetQuoteServer( qs );
  133. if( i >= 0 && i < aServers.GetSize() )
  134. {
  135. aServers.SetAt(i,qs);
  136. AfxGetQSProfile().SetCurrentServer(i);
  137. }
  138. SetupComboServer( );
  139. OnSelchangeComboServer( );
  140. AfxGetQSProfile().StoreProfile();
  141. }
  142. }
  143. void CSelectSrvDlg::OnDelete() 
  144. {
  145. int nSel = m_comboServer.GetCurSel();
  146. if( CB_ERR == nSel )
  147. {
  148. AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_NOSELECTED) );
  149. return;
  150. }
  151. if( IDYES != AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_DELCONFIRM), MB_YESNO ) )
  152. return;
  153. int i = m_comboServer.GetItemData(nSel);
  154. CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
  155. if( i >= 0 && i < aServers.GetSize() )
  156. {
  157. aServers.RemoveAt(i);
  158. AfxGetQSProfile().SetCurrentServer(i);
  159. }
  160. SetupComboServer( );
  161. OnSelchangeComboServer( );
  162. AfxGetQSProfile().StoreProfile();
  163. }
  164. void CSelectSrvDlg::OnProxySet() 
  165. {
  166. CProxySetDlg dlg;
  167. dlg.DoModal();
  168. }
  169. void CSelectSrvDlg::OnOK() 
  170. {
  171. m_btnOK.EnableWindow( FALSE );
  172. UpdateData( );
  173. int nSel = m_comboServer.GetCurSel();
  174. if( CB_ERR == nSel )
  175. {
  176. AfxMessageBox( AfxModuleLoadString(IDS_SELECTSRV_NOSELECTED) );
  177. m_btnOK.EnableWindow( TRUE );
  178. return;
  179. }
  180. int i = m_comboServer.GetItemData(nSel);
  181. CQuoteServerArray & aServers = AfxGetQSProfile().GetQuoteServers();
  182. if( i >= 0 && i < aServers.GetSize() )
  183. {
  184. AfxGetQSProfile().SetCurrentServer(i);
  185. CQuoteServer & qs = aServers.ElementAt(i);
  186. // Save
  187. qs.m_strUser = m_strUser;
  188. qs.m_strPasswd = m_strPasswd;
  189. qs.m_bSavePasswd = m_bSavePasswd;
  190. if( !qs.m_bSavePasswd )
  191. qs.m_strPasswd.Empty();
  192. // Load
  193. m_strAddress = qs.m_strAddress;
  194. m_nPort = qs.m_nPort;
  195. }
  196. AfxGetQSProfile().StoreProfile();
  197. // Connect
  198. BOOL bSuccess = CTWSocket::GetInstance().BeginWorking( AfxGetQSProfile().GetAlias(GetServer()),
  199. GetPort(), GetUser(), GetPasswd() );
  200. if( !bSuccess )
  201. {
  202. AfxMessageBox( CTWSocket::GetInstance().GetLastErrorString(), MB_OK );
  203. return;
  204. }
  205. CDialog::OnOK();
  206. }