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

📄 tipdlg.cpp

📁 本程序是VC为平台开发的股票资讯系统
💻 CPP
字号:
#include "stdafx.h"
#include "StockRefer.h"
#include "resource.h"
#include "tipdlg.h"

#include "MainFrm.h"

#include <sys\stat.h>
#include <sys\types.h>

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



#ifndef _WIN32

// supply a replacement for CDC::FillSolidColor for MSVC 1.5

void FillSolidRect(CDC *pDC, LPCRECT lpRect, COLORREF clr)
{
	ASSERT_VALID(pDC);
	ASSERT(pDC->m_hDC != NULL);

	pDC->SetBkColor(clr);
	pDC->ExtTextOut(0, 0, ETO_OPAQUE, lpRect, NULL, 0, NULL);
}

#endif


/////////////////////////////////////////////////////////////////////////////
// CTipDlg dialog

CTipDlg::CTipDlg(CWnd* pParent /*=NULL*/)
	: CDialog(IDD_TIP, pParent)
{
	// We need to find out what the startup and file position parameters are
	// If startup does not exist, we assume that the Tips on startup is checked TRUE.

	iTipPos = AfxGetApp()->GetProfileInt(_T("Base"),_T("TipPos"),0);
	iOldPos = iTipPos;
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	ASSERT(pFrame);
	m_tmpTip = pFrame->m_bShowTip;
	GetNextTipString(m_strTip);
}

CTipDlg::~CTipDlg()
{
	// This destructor is executed whether the user had pressed the escape key
	// or clicked on the close button. If the user had pressed the escape key,
	// it is still required to update the filepos in the ini file with the 
	// latest position so that we don't repeat the tips! 
    
	// But make sure the tips file existed in the first place....
	if(iTipPos != iOldPos)
		AfxGetApp()->WriteProfileInt(_T("Base"),_T("TipPos"),iTipPos);
}
        
void CTipDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTipDlg)
	DDX_Control(pDX, IDC_STARTUP, m_CTip);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTipDlg, CDialog)
	//{{AFX_MSG_MAP(CTipDlg)
	ON_BN_CLICKED(IDC_NEXTTIP, OnNextTip)
	ON_WM_CTLCOLOR()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTipDlg message handlers

void CTipDlg::OnNextTip()
{
	GetNextTipString(m_strTip);
	UpdateData(FALSE);
	
	CDC *pDC = GetDC() ;
	DoPaint (pDC, TRUE) ;
	VERIFY (ReleaseDC (pDC)) ;
}

void CTipDlg::GetNextTipString(CString& strNext)
{
	if(iTipPos > MaxTip - 1)
		iTipPos = 0;
	strNext = TipStr[iTipPos];
	iTipPos++; 
}

HBRUSH CTipDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	if (pWnd->GetDlgCtrlID() == IDC_TIPSTRING)
		return (HBRUSH)GetStockObject(WHITE_BRUSH);

	return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}

void CTipDlg::OnOK()
{
	CDialog::OnOK();
	
    // Update the startup information stored in the INI file
	int m_vtip;
	m_vtip = m_CTip.GetCheck();
	if(m_vtip != m_tmpTip)
	{
		CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
		ASSERT(pFrame);
		pFrame->m_bShowTip = m_vtip;
	}
}

BOOL CTipDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	// If Tips file does not exist then disable NextTip
	m_CTip.SetCheck(m_tmpTip);
	CenterWindow();

	return TRUE;  // return TRUE unless you set the focus to a control
}

void CTipDlg::OnPaint()
{
	CPaintDC dc(this); // device context for painting

	DoPaint (&dc, FALSE) ;

	// Do not call CDialog::OnPaint() for painting messages
}


int CTipDlg::DoModal ()
{
    return CDialog::DoModal () ;
}

void CTipDlg::DoPaint (CDC *pdc, BOOL updatetext)
{
	// Get paint area for the big static control
	CWnd* pStatic ;
	CRect  tiprect, bigrect, 
				 seprect, didyourect, bulbrect;

	CBrush brush;
	brush.CreateStockObject(WHITE_BRUSH);

	pStatic = GetDlgItem(IDC_STATIC1);
	pStatic->GetWindowRect(&bigrect);
	ScreenToClient(&bigrect);
	
	pStatic = GetDlgItem(IDC_TIPSTRING);
	pStatic->GetWindowRect(&tiprect);
	ScreenToClient(&tiprect);
	
	pStatic = (CStatic*)GetDlgItem (IDB_LIGHTBULB) ;
	pStatic->GetWindowRect (bulbrect) ;

	if (!updatetext)
	{	
		// Paint the background white.
	#ifndef _WIN32
		bigrect.InflateRect (-1,-1) ;
	#endif


#ifndef _WIN32
		FillSolidRect(pdc, bigrect, ::GetSysColor(COLOR_WINDOW));	
#else
		pdc->FillSolidRect(bigrect, ::GetSysColor(COLOR_WINDOW));	
#endif

		seprect = bigrect ;
	
		// Paint left side gray
	
		bigrect.right = tiprect.left - 10 ;
		CBrush gbrush;
#if 0
		gbrush.CreateStockObject(GRAY_BRUSH);
#else
		gbrush.CreateSolidBrush( ::GetSysColor(COLOR_BTNSHADOW)) ;
#endif


#ifndef _WIN32
		FillSolidRect(pdc, bigrect, ::GetSysColor(COLOR_BTNSHADOW));	
#else
		pdc->FillSolidRect(bigrect, ::GetSysColor(COLOR_BTNSHADOW));	
#endif
		pdc->SetBkColor(::GetSysColor(COLOR_WINDOW)) ;
	
		// Load bitmap and get dimensions of the bitmap
		CBitmap bmp;
		bmp.LoadBitmap(IDB_LIGHTBULB);
		BITMAP bmpInfo;	
	#ifdef _WIN32	
		bmp.GetBitmap(&bmpInfo);
	#else
		bmp.GetObject(sizeof(BITMAP), &bmpInfo) ;
	#endif	
		// Draw bitmap in top corner and validate only top portion of window
		CDC dcTmp;
		ScreenToClient (bulbrect) ;
		dcTmp.CreateCompatibleDC(pdc);
		dcTmp.SelectObject(&bmp);
		bulbrect.bottom = bmpInfo.bmHeight + bulbrect.top;
		bulbrect.right = bmpInfo.bmWidth + bulbrect.left;
		dcTmp.SelectObject(&gbrush) ;
		dcTmp.ExtFloodFill(0,0, 0x00ffffff, FLOODFILLSURFACE) ;
#if 1
		pdc->BitBlt(bulbrect.left, bulbrect.top, bulbrect.Width(), bulbrect.Height(), 
			&dcTmp, 0, 0, SRCCOPY);
#endif
			
		seprect.top = bulbrect.bottom + 6 ;	
		seprect.bottom = seprect.top + 1 ;

#ifndef _WIN32
		FillSolidRect(pdc, seprect, ::GetSysColor(COLOR_BTNSHADOW));
#else
		pdc->FillSolidRect(seprect, ::GetSysColor(COLOR_BTNSHADOW));
#endif
		pdc->SetBkColor(::GetSysColor(COLOR_WINDOW)) ;
    }

	CFont font, fonttext ;
	BOOL fok = font.CreateFont(16, 0, 0, 0, FW_BOLD, 0, 0, 0,
					  DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
					  CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
					  DEFAULT_PITCH|FF_SWISS, _T("宋体"));

	fok = fonttext.CreateFont(16, 0, 0, 0, FW_NORMAL, 0, 0, 0,
					  DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
					  CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
					  DEFAULT_PITCH|FF_SWISS, _T("宋体"));

	CFont *pOldFont = pdc->SelectObject(&font);
	// Draw out "Did you know..." message next to the bitmap
	CString strMessage;
	strMessage.LoadString(IDS_DIDYOUKNOW);
	didyourect = tiprect ;
	didyourect.top = bulbrect.top ;
	pdc->DrawText(strMessage, -1, didyourect, DT_SINGLELINE);
	
	pdc->SelectObject(&fonttext) ;


	// efface le rectangle contenant le text


#ifndef _WIN32
	FillSolidRect(pdc, tiprect, ::GetSysColor(COLOR_WINDOW));
#else
	pdc->FillSolidRect(tiprect, ::GetSysColor(COLOR_WINDOW));
#endif
	pdc->DrawText(m_strTip, -1, tiprect, DT_WORDBREAK);
	pdc->SelectObject(pOldFont) ;
}

⌨️ 快捷键说明

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