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

📄 about.cpp

📁 该工程是一个非常完整的,优化的五子棋源代码(VC),可以帮你学习路径选择算法和vc编程.
💻 CPP
字号:
// About.cpp : implementation file
//

#include "stdafx.h"
#include "ms5.h"
#include "About.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAbout dialog


CAbout::CAbout(CWnd* pParent /*=NULL*/)
	: CDialog(CAbout::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAbout)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	isIn = false;
}


void CAbout::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAbout)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAbout, CDialog)
	//{{AFX_MSG_MAP(CAbout)
	ON_WM_LBUTTONDOWN()
	ON_WM_CTLCOLOR()
	ON_WM_SETCURSOR()
	ON_WM_MOUSEMOVE()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAbout message handlers

BOOL CAbout::OnInitDialog() 
{
	CDialog::OnInitDialog();	
	int i,j;
	CClientDC dc(this);
	CBitmap bmp;CDC dcmem;BITMAP bm;
	bmp.LoadBitmap("bk");
	m_brush = CreatePatternBrush((HBITMAP)bmp);
	GetObject(bmp,sizeof(BITMAP),(LPVOID)&bm);
	dcmem.CreateCompatibleDC(&dc);
	dcmem.SelectObject(&bmp);
	dc.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcmem,0,0,SRCCOPY);
	CRgn myrgn,temprgn;
	myrgn.CreateRectRgn(0,0,bm.bmWidth,bm.bmHeight);
	COLORREF color=dcmem.GetPixel(0,0);
	for(i=0;i<bm.bmWidth;i++)
		for(j=0;j<bm.bmHeight;j++)
		{
			if (dcmem.GetPixel(i,j)==color)
			{
				temprgn.CreateRectRgn(i,j,i+1,j+1);
				myrgn.CombineRgn(&myrgn,&temprgn,RGN_XOR);
				temprgn.DeleteObject();
			}
		}
	SetWindowRgn(myrgn,TRUE);
	bmp.DeleteObject();		
	
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void CAbout::OnLButtonDown(UINT nFlags, CPoint point) 
{
	SendMessage(WM_SYSCOMMAND,0xf012,0);	
	CRect mailrect;
	CWnd *pStatic=GetDlgItem(IDC_MAILSTATIC);
	pStatic->GetWindowRect (mailrect);
	ScreenToClient(mailrect);	
	if (mailrect.PtInRect(point))
	{		
		ShellExecute(m_hWnd,NULL,"mailto:zhangpo03@mails.tsinghua.edu.cn",NULL,NULL,SW_SHOWMAXIMIZED);
	}	
	CDialog::OnLButtonDown(nFlags, point);
}

HBRUSH CAbout::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);	
	if (nCtlColor==CTLCOLOR_DLG)
		return m_brush;	
	if (nCtlColor==CTLCOLOR_STATIC) 
	{	
		if (!pWnd->IsKindOf( RUNTIME_CLASS( CEdit )))
		{
			pDC->SetBkMode(TRANSPARENT);
			return m_brush;
		}
	}	
	return hbr;
}

BOOL CAbout::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	CRect rcButton;
	CPoint ptCursor;
	CWnd *pStatic=GetDlgItem(IDC_MAILSTATIC);
	pStatic->GetWindowRect (rcButton);
	GetCursorPos(&ptCursor);
	if (rcButton.PtInRect (ptCursor))
	{
		CWinApp *pApp=AfxGetApp();
		HICON hIconBang=pApp->LoadCursor (IDC_CURSOR1);
		SetCursor(hIconBang);
		return TRUE;
	}	
	return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

void CAbout::OnMouseMove(UINT nFlags, CPoint point) 
{
	CWnd *pStatic=GetDlgItem(IDC_MAILSTATIC);
	CRect mailrect;
	pStatic->GetWindowRect (mailrect);
	ScreenToClient(mailrect);	
	if (mailrect.PtInRect(point))
	{
		if (!isIn)
		{
			LOGFONT lf;
			this->GetFont()->GetLogFont(&lf);
			lf.lfItalic = true;
			lf.lfUnderline = true;
			CFont cf;
			cf.CreateFontIndirect(&lf);
			pStatic->SetFont(&cf);
			isIn = true;
		}		
	}	
	else
	{
		if (isIn)
		{
			LOGFONT lf;
			this->GetFont()->GetLogFont(&lf);
			lf.lfItalic = false;
			lf.lfUnderline = false;
			CFont cf;
			cf.CreateFontIndirect(&lf);
			pStatic->SetFont(&cf);		
			isIn = false;
		}
		
	}
	CDialog::OnMouseMove(nFlags, point);
}

void CAbout::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	CWnd *pStatic=GetDlgItem(IDC_MAILSTATIC);
	CRect mailrect;
	pStatic->GetWindowRect (mailrect);
	CPoint point;
	GetCursorPos(&point);
	if (mailrect.PtInRect(point))
	{
		LOGFONT lf;
		this->GetFont()->GetLogFont(&lf);
		lf.lfItalic = true;
		lf.lfUnderline = true;
		CFont cf;
		cf.CreateFontIndirect(&lf);
		pStatic->SetFont(&cf);			
	}	
	else
	{
		LOGFONT lf;
		this->GetFont()->GetLogFont(&lf);
		lf.lfItalic = false;
		lf.lfUnderline = false;
		CFont cf;
		cf.CreateFontIndirect(&lf);
		pStatic->SetFont(&cf);		
	
	}	
	// Do not call CDialog::OnPaint() for painting messages
}

⌨️ 快捷键说明

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