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

📄 alarmtipdlg.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
字号:
// AlarmTipDlg.cpp : implementation file
//

#include "stdafx.h"
#include "..\stkui.h"
#include "AlarmTipDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAlarmTipDlg dialog

CAlarmTipDlg & CAlarmTipDlg::GetInstance()
{
	static CAlarmTipDlg	s_alarmtip;
	if( !::IsWindow(s_alarmtip.GetSafeHwnd()) )
		VERIFY( s_alarmtip.Create( CAlarmTipDlg::IDD, CWnd::GetDesktopWindow() ) );
	return s_alarmtip;
}


CAlarmTipDlg::CAlarmTipDlg(CWnd* pParent /*=NULL*/)
	: CTipDialog(CAlarmTipDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAlarmTipDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_nIndexStart	=	0;
	m_nPageCount	=	9;
	m_nItemHeight	=	15;
}

void CAlarmTipDlg::SetItemHeight( int nHeight )
{
	if( nHeight > 0 )
		m_nItemHeight = nHeight;

	if( ::IsWindow(GetSafeHwnd()) )
	{
		CRect rectClient;
		GetClientRect( &rectClient );
		m_nPageCount = (rectClient.Height()-25) / m_nItemHeight;
		m_nPageCount -= 1;
		if( m_nPageCount < 1 )
			m_nPageCount = 1;
	}
}

void CAlarmTipDlg::Show( )
{
	m_nIndexStart	=	0;
	UpdateButtons( );
	CTipDialog::Show();
}
void CAlarmTipDlg::Hide( )
{
	CTipDialog::Hide();
}
void CAlarmTipDlg::ShowGradual( )
{
	m_nIndexStart	=	0;
	UpdateButtons( );
	CTipDialog::ShowGradual();
}
void CAlarmTipDlg::HideGradual( )
{
	CTipDialog::HideGradual();
}

void CAlarmTipDlg::UpdateButtons( )
{
	m_btnPrior.EnableWindow( m_nIndexStart > 0 );
	m_btnNext.EnableWindow( m_nIndexStart + m_nPageCount < AfxGetAlarmContainer().GetSize() );
}

void CAlarmTipDlg::DoDataExchange(CDataExchange* pDX)
{
	CTipDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAlarmTipDlg)
	DDX_Control(pDX, IDC_NEXT, m_btnNext);
	DDX_Control(pDX, IDC_PRIOR, m_btnPrior);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAlarmTipDlg, CTipDialog)
	//{{AFX_MSG_MAP(CAlarmTipDlg)
	ON_WM_CHAR()
	ON_BN_CLICKED(IDC_PRIOR, OnPrior)
	ON_BN_CLICKED(IDC_NEXT, OnNext)
	ON_WM_PAINT()
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAlarmTipDlg message handlers

BOOL CAlarmTipDlg::OnInitDialog() 
{
	CTipDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	SetItemHeight( );

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

void CAlarmTipDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if( VK_PRIOR == nChar )
	{
		OnPrior();
	}
	else if( VK_NEXT == nChar )
	{
		OnNext();
	}
	CTipDialog::OnChar(nChar, nRepCnt, nFlags);
}

void CAlarmTipDlg::OnPrior() 
{
	m_nIndexStart -= m_nPageCount;
	if( m_nIndexStart < 0 )
		m_nIndexStart = 0;
	UpdateButtons();
	Invalidate( );
}

void CAlarmTipDlg::OnNext() 
{
	m_nIndexStart += m_nPageCount;
	if( m_nIndexStart >= AfxGetAlarmContainer().GetSize() )
		m_nIndexStart -= m_nPageCount;
	UpdateButtons();
	Invalidate( );
}

void CAlarmTipDlg::OnPaint() 
{
	// Do not call CTipDialog::OnPaint() for painting messages
	// CTipDialog::OnPaint();

	CPaintDC dc(this); // device context for painting
	
	dc.SetBkMode( TRANSPARENT );
	CFont * pOldFont = AfxSelectDCFont(&dc,14);

	CRect rectAll;
	GetClientRect( &rectAll );
	int nWidthTotal = rectAll.Width();
	double o = (nWidthTotal-10) / 26;

	CRect rect;
	int x = 5, y = 5;
	int nCount = 0;
	CAlarmContainer & container = AfxGetAlarmContainer();

	// Draw Header Title
	{
		CString strCode = AfxGetVariantName(SLH_CODE,FALSE);
		CString strDiffPercent = AfxGetVariantName(SLH_DIFFPERCENT,FALSE);
		CString strReason;
		strReason.LoadString( IDS_ALARMRESULT_REASON );

		dc.SetTextColor( AfxGetProfile().GetColor(CColorClass::clrTitle) );
		rect = CRect(x,y,x+6*o,y+m_nItemHeight-1);
		dc.DrawText( strCode, rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS );
		rect = CRect(x+6*o,y,x+14*o,y+m_nItemHeight-1);
		dc.DrawText( strDiffPercent, rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS );
		rect = CRect(x+14*o,y,rectAll.right-5,y+m_nItemHeight-1);
		dc.DrawText( strReason, rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS );

		y += m_nItemHeight;
	}

	y += 2;

	dc.SetTextColor( AfxGetProfile().GetColor(CColorClass::clrText) );
	for( int nIndex=m_nIndexStart; nIndex<container.GetSize(); nIndex++ )
	{
		nCount ++;
		if( nCount > m_nPageCount )
			break;

		ALARM & alarm = container.ElementAt(nIndex);
		CString strCode = alarm.report.m_szCode;
		CString strDiffPercent = "-";
		if( alarm.report.m_fLast > 1e-4 )
			strDiffPercent.Format( ".2f", alarm.report.m_fNew/alarm.report.m_fLast-1 );
		CString strReason = container.GetDescript( alarm );

		rect = CRect(x,y,x+6*o,y+m_nItemHeight-1);
		dc.DrawText( strCode, rect, DT_VCENTER | DT_RIGHT | DT_SINGLELINE | DT_WORD_ELLIPSIS );
		rect = CRect(x+6*o,y,x+14*o,y+m_nItemHeight-1);
		dc.DrawText( strDiffPercent, rect, DT_VCENTER | DT_RIGHT | DT_SINGLELINE | DT_WORD_ELLIPSIS );
		rect = CRect(x+14*o,y,rectAll.right-10,y+m_nItemHeight-1);
		dc.DrawText( strReason, rect, DT_VCENTER | DT_LEFT | DT_SINGLELINE | DT_WORD_ELLIPSIS );

		y += m_nItemHeight;
	}

	dc.SelectObject(pOldFont);
}

void CAlarmTipDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	ClientToScreen( &point );
	CRect rect;
	m_btnPrior.GetWindowRect( &rect );
	rect.InflateRect( 5, 5, 5, 5 );
	if( rect.PtInRect(point) )
		return;
	m_btnNext.GetWindowRect( &rect );
	rect.InflateRect( 5, 5, 5, 5 );
	if( rect.PtInRect(point) )
		return;
	
	CTipDialog::OnLButtonDown(nFlags, point);
}

⌨️ 快捷键说明

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