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

📄 setcolumndlg.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_COLUMNLIST, OnItemchangedColumnlist)
	ON_BN_CLICKED(IDC_SETDEFAULT, OnSetdefault)
	ON_NOTIFY(NM_DBLCLK, IDC_COLUMNLIST, OnDblclkColumnlist)
	ON_BN_CLICKED(IDC_SETALL, OnSetall)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetColumnDlg message handlers

BOOL CSetColumnDlg::OnInitDialog() 
{
	CXFDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_listColumn.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP
						| LVS_EX_FLATSB | LVS_EX_REGIONAL | LVS_EX_INFOTIP | LVS_EX_UNDERLINEHOT );


	CRect	rectList;
	m_listColumn.GetClientRect( &rectList );
	CString	strHeaderName, strHeaderDescript, strHeaderSetting, strUserDefine;
	strHeaderName.LoadString( IDS_SETCOLUMN_NAME );
	strHeaderDescript.LoadString( IDS_SETCOLUMN_DESCRIPT );
	strHeaderSetting.LoadString( IDS_SETCOLUMN_SETTING );
	strUserDefine.LoadString( IDS_SETCOLUMN_USERDEFINE );
	m_listColumn.InsertColumn( 0, strHeaderName, LVCFMT_CENTER, rectList.Width() / 3 - 8 );
	m_listColumn.InsertColumn( 1, strHeaderDescript, LVCFMT_CENTER, rectList.Width() / 3 - 2 );
	m_listColumn.InsertColumn( 2, strHeaderSetting, LVCFMT_CENTER, rectList.Width() / 3 - 8 );

	SetListColumnItems( AfxGetProfile().GetSListColumnsShow(), FALSE );
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSetColumnDlg::OnMoveup() 
{
	// TODO: Add your control notification handler code here
	if( 0 == m_listColumn.GetSelectedCount( ) )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	int	nSelected	=	-1;
	for( int i=0; i<m_listColumn.GetItemCount(); i++ )
	{
		if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
		{
			nSelected	=	i;
			break;
		}
	}
	
	if( -1 == nSelected )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	if( 0 == nSelected )
	{
		AfxMessageBox( IDS_SETCOLUMN_FIRST, MB_OK | MB_ICONINFORMATION );
		return;
	}

	DWORD	dwData	=	m_listColumn.GetItemData( nSelected );
	CString	strName	=	m_listColumn.GetItemText( nSelected, 0 );
	CString	strDis	=	m_listColumn.GetItemText( nSelected, 1 );
	BOOL	bCheck	=	m_listColumn.GetCheck( nSelected );
	if( m_listColumn.DeleteItem( nSelected ) )
	{
		int	nItem	=	m_listColumn.InsertItem( nSelected-1, strName, -1 );
		m_listColumn.SetItemText( nItem, 1, strDis );
		m_listColumn.SetItemData( nItem, dwData );
		m_listColumn.SetItemState( nItem, LVIS_SELECTED, LVIS_SELECTED );
		m_listColumn.SetCheck( nItem, bCheck );
	}
}

void CSetColumnDlg::OnMovedown() 
{
	// TODO: Add your control notification handler code here
	if( 0 == m_listColumn.GetSelectedCount( ) )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	int	nSelected	=	-1;
	for( int i=0; i<m_listColumn.GetItemCount(); i++ )
	{
		if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
		{
			nSelected	=	i;
			break;
		}
	}
	
	if( -1 == nSelected )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	if( m_listColumn.GetItemCount()-1 == nSelected )
	{
		AfxMessageBox( IDS_SETCOLUMN_LAST, MB_OK | MB_ICONINFORMATION );
		return;
	}

	DWORD	dwData	=	m_listColumn.GetItemData( nSelected );
	CString	strName	=	m_listColumn.GetItemText( nSelected, 0 );
	CString	strDis	=	m_listColumn.GetItemText( nSelected, 1 );
	BOOL	bCheck	=	m_listColumn.GetCheck( nSelected );
	if( m_listColumn.DeleteItem( nSelected ) )
	{
		int	nItem	=	m_listColumn.InsertItem( nSelected+1, strName, -1 );
		m_listColumn.SetItemText( nItem, 1, strDis );
		m_listColumn.SetItemData( nItem, dwData );
		m_listColumn.SetItemState( nItem, LVIS_SELECTED, LVIS_SELECTED );
		m_listColumn.SetCheck( nItem, bCheck );
	}
}

void CSetColumnDlg::OnNewindex() 
{
	// TODO: Add your control notification handler code here
	CBaseIndexDlg	dlg;
	if( IDOK == dlg.DoModal() )
	{
		CIndex	index	=	dlg.GetIndexInfo();

		CString	strDis;
		strDis.LoadString( IDS_SETCOLUMN_USERDEFINE );
		int nItem = m_listColumn.InsertItem( m_listColumn.GetItemCount(), index.m_strName, -1 );
		m_listColumn.SetItemText( nItem, 1, strDis );
		m_listColumn.SetItemData( nItem, index.m_nID );
		m_listColumn.SetCheck( nItem, dlg.m_bAddToList );
	}
}

void CSetColumnDlg::OnEditindex() 
{
	// TODO: Add your control notification handler code here
	if( 0 == m_listColumn.GetSelectedCount( ) )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	int	nSelected	=	-1;
	for( int i=0; i<m_listColumn.GetItemCount(); i++ )
	{
		if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
		{
			nSelected	=	i;
			break;
		}
	}
	
	if( -1 == nSelected )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	DWORD	dwData	=	m_listColumn.GetItemData( nSelected );
	if( dwData < SLH_USERDEFINE_BEGIN )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOTUSERDEFINE, MB_OK | MB_ICONINFORMATION );
		return;
	}

	CBaseIndexDlg	dlg;
	dlg.m_bAddToList	=	m_listColumn.GetCheck( nSelected );
	dlg.SetIndexInfo( dwData );
	if( IDOK == dlg.DoModal() )
	{
		CIndex	index	=	dlg.GetIndexInfo();

		m_listColumn.SetItemText( nSelected, 0, index.m_strName );
		m_listColumn.SetCheck( nSelected, dlg.m_bAddToList );

		m_bUserIndexModified	=	TRUE;
	}
}

void CSetColumnDlg::OnDelindex() 
{
	// TODO: Add your control notification handler code here
	if( 0 == m_listColumn.GetSelectedCount( ) )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	int	nSelected	=	-1;
	for( int i=0; i<m_listColumn.GetItemCount(); i++ )
	{
		if( LVIS_SELECTED == m_listColumn.GetItemState(i,LVIS_SELECTED) )
		{
			nSelected	=	i;
			break;
		}
	}
	
	if( -1 == nSelected )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOSEL, MB_OK | MB_ICONINFORMATION );
		return;
	}

	DWORD	dwData	=	m_listColumn.GetItemData( nSelected );
	if( dwData < SLH_USERDEFINE_BEGIN )
	{
		AfxMessageBox( IDS_SETCOLUMN_NOTUSERDEFINE, MB_OK | MB_ICONINFORMATION );
		return;
	}

	if( IDYES == AfxMessageBox( IDS_SETCOLUMN_QUERYDEL, MB_YESNO | MB_ICONINFORMATION ) )
	{
		m_listColumn.DeleteItem( nSelected );
		CIndexContainer & acol = AfxGetProfile().GetSListColumnsUser();
		acol.RemoveIndex( dwData );
	}
}

void CSetColumnDlg::OnOK() 
{
	// TODO: Add extra validation here
	m_btnOK.EnableWindow( FALSE );

	// Store Show Items
	CSPDWordArray	& anShow	= AfxGetProfile().GetSListColumnsShow( );
	CSPDWordArray	& anOrder	= AfxGetProfile().GetSListColumnsOrder( );
	anShow.RemoveAll();
	anOrder.RemoveAll();
	for( int i=0; i<m_listColumn.GetItemCount(); i++ )
	{
		UINT	nID	=	m_listColumn.GetItemData( i );
		anOrder.Add( nID );

		if( m_listColumn.GetCheck( i ) )
			anShow.Add( nID );
	}

	if( 0 == anShow.GetSize() && IDNO == AfxMessageBox( IDS_SETCOLUMN_NOSELECT, MB_YESNO ) )
		return;

	// Store Parameters
	m_listColumn.HideItemComboBox( );
	for( int nItem=0; nItem<m_listColumn.GetItemCount(); nItem++ )
	{
		// Set Item Text
		UINT	nID	=	m_listColumn.GetItemData(nItem);

		// Set Column Combo Text
		CString	strParam;
		if( SLH_DIFF == nID )
		{
			strParam	=	m_listColumn.GetItemText( nItem, 2 );
			int	nDays	=	atol( strParam );
			AfxGetProfile().SetDiffDays( nDays );
		}
		else if( SLH_DIFFPERCENT == nID )
		{
			strParam	=	m_listColumn.GetItemText( nItem, 2 );
			int	nDays	=	atol( strParam );
			AfxGetProfile().SetDiffPercentDays( nDays );
		}
		else if( SLH_SCOPE == nID )
		{
			strParam	=	m_listColumn.GetItemText( nItem, 2 );
			int	nDays	=	atol( strParam );
			AfxGetProfile().SetScopeDays( nDays );
		}
		else if( SLH_RATIO_CHANGEHAND == nID )
		{
			strParam	=	m_listColumn.GetItemText( nItem, 2 );
			int	nDays	=	atol( strParam );
			AfxGetProfile().SetRatioChangeHandDays( nDays );
		}
		else if( SLH_RATIO_VOLUME == nID )
		{
			strParam	=	m_listColumn.GetItemText( nItem, 2 );
			int	nDays	=	atol( strParam );
			AfxGetProfile().SetRatioVolumeDays( nDays );
		}
		else if( SLH_RS == nID )
		{
			strParam	=	m_listColumn.GetItemText( nItem, 2 );
			int	nDays	=	atol( strParam );
			AfxGetProfile().SetRSDays( nDays );
		}
		else if( SLH_ANNGAINS_AVERAGE == nID )
		{
			strParam	=	m_listColumn.GetItemText( nItem, 2 );
			int	nDays	=	atol( strParam );
			AfxGetProfile().SetYieldAverageDays( nDays );
		}
	}
	
	AfxGetProfile().StoreProfile( );

	CXFDialog::OnOK();

	//CMainFrame	* pMainFrame	=	AfxGetMainFrame();
	//if( pMainFrame )
	//{
	//	pMainFrame->m_DateBox.InitDates( );
	//	pMainFrame->m_DateBox.SetCurrentWindowText( );
	//}

	// Recalculate Yield Average
	if( AfxGetProfile().GetYieldAverageDays() != m_nYieldAverageDaysOld )
	{
		// Need Recalculate
		if( IDYES == AfxMessageBox( IDS_SETCOLUMN_IFRECALCULATE, MB_YESNO|MB_ICONINFORMATION ) )
		{
			AfxRecalculateYield( AfxGetProfile().GetYieldAverageDays(), TRUE );
			AfxGetStockContainer().ReloadBase( &AfxGetDB() );
			AfxGetSListStockContainer().ReRetrieveFromStatic( AfxGetActiveStrategy() );
		}
	}
	
	//	Clear the User Defined Index Cache
	if( m_bUserIndexModified )
		AfxGetSListStockContainer().ClearVariantSaveValue();
}

void CSetColumnDlg::OnItemchangedColumnlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if( LVIS_SELECTED & pNMListView->uNewState )
	{
		DWORD id = m_listColumn.GetItemData( pNMListView->iItem );
		BOOL	b	=	( id >= SLH_USERDEFINE_BEGIN );
		m_btnDelIndex.EnableWindow( b );
		m_btnEditIndex.EnableWindow( b );
	}
	
	*pResult = 0;
}

void CSetColumnDlg::OnSetdefault() 
{
	// TODO: Add your control notification handler code here
	if( IDYES == AfxMessageBox( IDS_SETCOLUMN_SETDEFAULT, MB_YESNO | MB_ICONINFORMATION ) )
	{
		AfxGetProfile().SetSListColumnsDefault( );
		SetListColumnItems( AfxGetProfile().GetSListColumnsShow(), TRUE );
	}
}

void CSetColumnDlg::OnSetall() 
{
	// TODO: Add your control notification handler code here
	int	nCheck	=	m_btnSetAll.GetCheck();
	for( int i=0; i<m_listColumn.GetItemCount(); i++ )
		m_listColumn.SetCheck( i, nCheck );
}

void CSetColumnDlg::OnDblclkColumnlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	DWORD id = m_listColumn.GetItemData( pNMListView->iItem );
	if( id >= SLH_USERDEFINE_BEGIN )
		OnEditindex( );
	
	*pResult = 0;
}

⌨️ 快捷键说明

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