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

📄 setgroupdlg.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:

CSetGroupDlg::CSetGroupDlg(CWnd* pParent /*=NULL*/)
	: CXFDialog(CSetGroupDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetGroupDlg)
	//}}AFX_DATA_INIT
}

void CSetGroupDlg::SetInitialGroup( CString strGroupName )
{
	m_strInitialGroupName	=	strGroupName;
}

void CSetGroupDlg::AddtoGroup( CSPStringArray & astrStocks )
{
	m_astrInitialGroupStocks.RemoveAll( );
	m_astrInitialGroupStocks.Copy( astrStocks );
}

void CSetGroupDlg::DoDataExchange(CDataExchange* pDX)
{
	CXFDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetGroupDlg)
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Control(pDX, IDOK, m_btnOK);
	DDX_Control(pDX, IDC_STATIC_INFO, m_staticInfo);
	DDX_Control(pDX, IDC_REMOVEALL, m_btnRemoveAll);
	DDX_Control(pDX, IDC_REMOVESELECTED, m_btnRemoveSelected);
	DDX_Control(pDX, IDC_ADDALL, m_btnAddAll);
	DDX_Control(pDX, IDC_ADDSELECTED, m_btnAddSelected);
	DDX_Control(pDX, IDC_DELETEGROUP, m_btnDeleteGroup);
	DDX_Control(pDX, IDC_ADDGROUP, m_btnAddGroup);
	DDX_Control(pDX, IDC_LIST_STOCKDEST, m_listStockDest);
	DDX_Control(pDX, IDC_COMBO_GROUPDEST, m_comboGroupDest);
	DDX_Control(pDX, IDC_LIST_STOCKSRC, m_listStockSrc);
	DDX_Control(pDX, IDC_COMBO_GROUPSRC, m_comboGroupSrc);
	DDX_Control(pDX, IDC_EDITCODE, m_editCode);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetGroupDlg, CXFDialog)
	//{{AFX_MSG_MAP(CSetGroupDlg)
	ON_BN_CLICKED(IDC_ADDGROUP, OnAddgroup)
	ON_BN_CLICKED(IDC_DELETEGROUP, OnDeletegroup)
	ON_BN_CLICKED(IDC_ADDSELECTED, OnAddselected)
	ON_BN_CLICKED(IDC_ADDALL, OnAddall)
	ON_BN_CLICKED(IDC_REMOVESELECTED, OnRemoveselected)
	ON_BN_CLICKED(IDC_REMOVEALL, OnRemoveall)
	ON_EN_CHANGE(IDC_EDITCODE, OnChangeEditcode)
	ON_CBN_SELCHANGE(IDC_COMBO_GROUPSRC, OnSelchangeComboGroupsrc)
	ON_CBN_SELCHANGE(IDC_COMBO_GROUPDEST, OnSelchangeComboGroupdest)
	ON_LBN_DBLCLK(IDC_LIST_STOCKSRC, OnDblclkListStocksrc)
	ON_LBN_DBLCLK(IDC_LIST_STOCKDEST, OnDblclkListStockdest)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetGroupDlg message handlers

BOOL CSetGroupDlg::OnInitDialog()
{
	CXFDialog::OnInitDialog();
	
	CWaitCursor	waitcursor;

	// TODO: Add extra initialization here
	CDomainContainer & groups = AfxGetGroupContainer( );
	CDomainContainer & domains = AfxGetDomainContainer( );
	CStockContainer & container = AfxGetStockContainer();

	m_grpTemp	=	groups;

	// Src
	m_comboGroupSrc.InitStrings( TRUE, TRUE, groups );
	m_comboGroupSrc.SetCurSel( 0 );
	OnSelchangeComboGroupsrc();

	// Dest
	m_comboGroupDest.InitStrings( FALSE, FALSE, m_grpTemp );
	m_comboGroupDest.SetCurSel( 0 );
	if( m_strInitialGroupName.GetLength() > 0
		&& CB_ERR != m_comboGroupDest.SelectString( 0, m_strInitialGroupName ) )
	{
		for( int k=0; k<m_astrInitialGroupStocks.GetSize(); k++ )
			m_grpTemp.AddDomainStock( m_strInitialGroupName, m_astrInitialGroupStocks.ElementAt(k) );
	}
	OnSelchangeComboGroupdest();

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

void CSetGroupDlg::OnAddgroup() 
{
	// TODO: Add your control notification handler code here
	CStringDialog	dlg( this, IDS_SETGROUP_INPUTGNAME, IDS_SETGROUP_INPUTGNAME, NULL );
	if( IDOK != dlg.DoModal() )
		return;
	CString	strNewName	=	dlg.GetStringWant( );
	CString	strInfo;
	strInfo.LoadString( IDS_SETGROUP_ADDFAILED );
	if( strNewName.GetLength() > 0 )
	{
		if( -1 != m_grpTemp.AddDomain( strNewName ) )
		{
			int nNew = m_comboGroupDest.AddGroup( strNewName );
			if( CB_ERR != nNew )
			{
				m_comboGroupDest.SetCurSel( nNew );
				OnSelchangeComboGroupdest( );
				strInfo.LoadString( IDS_SETGROUP_ADDSUCCESS );
			}
		}
		else
		{
			strInfo.LoadString( IDS_SETGROUP_GROUPALREADYEXIST );
		}
	}
	
	m_staticInfo.SetWindowText( strInfo );
}

void CSetGroupDlg::OnDeletegroup() 
{
	// TODO: Add your control notification handler code here
	CString	strInfo;
	strInfo.LoadString( IDS_SETGROUP_DELETEFAILED );

	int nSel = m_comboGroupDest.GetCurSel();
	if( CB_ERR != nSel )
	{
		if( IDYES == AfxMessageBox( IDS_SETGROUP_DELETECONFIRM, MB_YESNO | MB_ICONQUESTION ) )
		{
			CString	strName;
			m_comboGroupDest.GetWindowText( strName );
			if( m_grpTemp.RemoveDomain( strName )
				&& CB_ERR != m_comboGroupDest.DeleteString( nSel ) )
			{
				nSel	=	( nSel >= m_comboGroupDest.GetCount() ? 0 : nSel );
				m_comboGroupDest.SetCurSel( nSel );
				OnSelchangeComboGroupdest();
				strInfo.LoadString( IDS_SETGROUP_DELETESUCCESS );
			}
		}
		else
			strInfo.LoadString( IDS_SETGROUP_USERCANCEL );
	}
	else
		strInfo.LoadString( IDS_SETGROUP_NOSELECTEDGROUP );
	
	m_staticInfo.SetWindowText( strInfo );
}

void CSetGroupDlg::OnAddselected() 
{
	// TODO: Add your control notification handler code here
	CString	strDomainName;
	m_comboGroupDest.GetWindowText( strDomainName );
	if( strDomainName.GetLength() <= 0 )
	{
		AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
		return;
	}

	m_listStockDest.SelectItem( -1, FALSE );

	for( int i=0; i<m_listStockSrc.GetCount(); i++ )
	{
		int bSel = m_listStockSrc.GetSelected(i);
		if( LB_ERR != bSel && bSel )
		{
			CString	rString, strStockCode;
			m_listStockSrc.GetText(i,rString);
			int	nIndex	=	rString.Find( '(' );
			if( -1 != nIndex )
				strStockCode	=	rString.Left( nIndex );
			
			int	nSelDest	=	-1;
			if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
				nSelDest	=	m_listStockDest.AddString( rString );
			else
				nSelDest	=	m_listStockDest.FindString( -1, rString );
			m_listStockDest.SelectAndShowItem( nSelDest );
		}
	}
	m_editCode.SetWindowText( NULL );
}

void CSetGroupDlg::OnAddall() 
{
	// TODO: Add your control notification handler code here
	CString	strDomainName;
	m_comboGroupDest.GetWindowText( strDomainName );
	if( strDomainName.GetLength() <= 0 )
	{
		AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
		return;
	}

	m_listStockDest.SelectItem( -1, FALSE );

	for( int i=0; i<m_listStockSrc.GetCount(); i++ )
	{
		CString	rString, strStockCode;
		m_listStockSrc.GetText(i,rString);
		int	nIndex	=	rString.Find( '(' );
		if( -1 != nIndex )
			strStockCode	=	rString.Left( nIndex );
			
		int	nSelDest	=	-1;
		if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
			nSelDest	=	m_listStockDest.AddString( rString );
		else
			nSelDest	=	m_listStockDest.FindString( -1, rString );
		m_listStockDest.SelectItem( nSelDest, TRUE );
	}
	m_editCode.SetWindowText( NULL );
}

void CSetGroupDlg::OnRemoveselected() 
{
	// TODO: Add your control notification handler code here
	CString	strDomainName;
	m_comboGroupDest.GetWindowText( strDomainName );
	if( strDomainName.GetLength() <= 0 )
	{
		AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
		m_comboGroupDest.SetCurSel( 0 );
		OnSelchangeComboGroupdest();
		return;
	}

	for( int i=m_listStockDest.GetCount()-1; i>=0; i-- )
	{
		int bSel = m_listStockDest.GetSelected(i);
		if( LB_ERR != bSel && bSel )
		{
			CString	rString, strStockCode;
			m_listStockDest.GetText(i,rString);
			int	nIndex	=	rString.Find( '(' );
			if( -1 != nIndex )
				strStockCode	=	rString.Left( nIndex );

			if( m_grpTemp.RemoveDomainStock( strDomainName, strStockCode ) )
				m_listStockDest.DeleteString( i );
		}
	}
}

void CSetGroupDlg::OnRemoveall() 
{
	// TODO: Add your control notification handler code here
	CString	strDomainName;
	m_comboGroupDest.GetWindowText( strDomainName );
	if( strDomainName.GetLength() <= 0 )
	{
		AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
		m_comboGroupDest.SetCurSel( 0 );
		OnSelchangeComboGroupdest();
		return;
	}

	m_grpTemp.RemoveDomainStockAll( strDomainName );
	m_listStockDest.ResetContent( );
}

void CSetGroupDlg::OnDblclkListStocksrc() 
{
	// TODO: Add your control notification handler code here
	CString	strDomainName;
	m_comboGroupDest.GetWindowText( strDomainName );
	if( strDomainName.GetLength() <= 0 )
	{
		AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
		return;
	}

	m_listStockDest.SelectItem( -1, FALSE );

	int nCaretIndex = m_listStockSrc.GetCaretIndex();
	if( LB_ERR != nCaretIndex )
	{
		CString	rString, strStockCode;
		m_listStockSrc.GetText(nCaretIndex,rString);
		m_listStockSrc.SelectItem( nCaretIndex, FALSE );
		int	nIndex	=	rString.Find( '(' );
		if( -1 != nIndex )
			strStockCode	=	rString.Left( nIndex );
			
		int	nSelDest	=	-1;
		if( m_grpTemp.AddDomainStock( strDomainName, strStockCode ) )
			nSelDest	=	m_listStockDest.AddString( rString );
		else
			nSelDest	=	m_listStockDest.FindString( -1, rString );
		m_listStockDest.SelectAndShowItem( nSelDest );
	}
}

void CSetGroupDlg::OnDblclkListStockdest() 
{
	// TODO: Add your control notification handler code here
	CString	strDomainName;
	m_comboGroupDest.GetWindowText( strDomainName );
	if( strDomainName.GetLength() <= 0 )
	{
		AfxMessageBox( IDS_SETGROUP_NOSELECTEDGROUP, MB_OK|MB_ICONINFORMATION );
		m_comboGroupDest.SetCurSel( 0 );
		OnSelchangeComboGroupdest();
		return;
	}

	int nCaretIndex	=	m_listStockDest.GetCaretIndex();
	if( LB_ERR != nCaretIndex )
	{
		CString	rString, strStockCode;
		m_listStockDest.GetText(nCaretIndex,rString);
		int	nIndex	=	rString.Find( '(' );
		if( -1 != nIndex )
			strStockCode	=	rString.Left( nIndex );

		if( m_grpTemp.RemoveDomainStock( strDomainName, strStockCode ) )
			m_listStockDest.DeleteString( nCaretIndex );
	}
}

void CSetGroupDlg::OnChangeEditcode() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CXFDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	CString	strText;
	m_editCode.GetWindowText( strText );
	strText.TrimLeft();
	strText.TrimLeft();
	if( strText.GetLength() > 0 )
	{
		int	nSel	=	m_comboGroupSrc.GetCurSel();
		if( CB_ERR == nSel ||
			CStockContainer::typeAll != (int)(m_comboGroupSrc.GetItemData( nSel )) )
		{
			m_comboGroupSrc.SelectGroupAll( );
			OnSelchangeComboGroupsrc();
		}
	}
	if( !m_listStockSrc.SelectCode( 0, strText ) )
		m_listStockSrc.SelectShortname( 0, strText );
}

void CSetGroupDlg::OnSelchangeComboGroupsrc() 
{
	// TODO: Add your control notification handler code here
	int nType = m_comboGroupSrc.GetCurSelType();
	CString strName = m_comboGroupSrc.GetCurSelName();
	m_listStockSrc.SetCurrentStocks( nType, strName, AfxGetGroupContainer() );
}

void CSetGroupDlg::OnSelchangeComboGroupdest() 
{
	// TODO: Add your control notification handler code here
	int nType = m_comboGroupDest.GetCurSelType();
	CString strName = m_comboGroupDest.GetCurSelName();
	m_listStockDest.SetCurrentStocks( nType, strName, m_grpTemp );
}

void CSetGroupDlg::OnOK() 
{
	// TODO: Add extra validation here
	CDomainContainer & groups = AfxGetGroupContainer( );
	groups	=	m_grpTemp;
	groups.Store( AfxGetProfile().GetGroupFile() );

	::PostMessage( AfxGetGroupView()->GetSafeHwnd(), WM_USER_UPDATEGROUPS, 0, 0 );
	::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_USER_UPDATEBARMENU, 0, 0 );

	CXFDialog::OnOK();
}

void CSetGroupDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	CXFDialog::OnCancel();
}

BOOL CSetGroupDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if( WM_KEYDOWN == pMsg->message )
	{
		if( VK_UP == pMsg->wParam )
		{
			if( ::GetFocus() == m_editCode.GetSafeHwnd() )
			{
				m_listStockSrc.SelectUp( );
				return TRUE;
			}
		}
		else if( VK_DOWN == pMsg->wParam )
		{
			if( ::GetFocus() == m_editCode.GetSafeHwnd() )
			{
				m_listStockSrc.SelectDown( );
				return TRUE;
			}
		}
		else if( VK_PRIOR == pMsg->wParam )
		{
			if( ::GetFocus() == m_editCode.GetSafeHwnd() )
			{
				m_listStockSrc.SelectPrior( );
				return TRUE;
			}
		}
		else if( VK_NEXT == pMsg->wParam )
		{
			if( ::GetFocus() == m_editCode.GetSafeHwnd() )
			{
				m_listStockSrc.SelectNext( );
				return TRUE;
			}
		}
		else if( VK_RETURN == pMsg->wParam )
		{
			OnAddselected( );
			return TRUE;
		}
	}
	
	return CXFDialog::PreTranslateMessage(pMsg);
}

⌨️ 快捷键说明

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