亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aboutctrl.cpp

?? smartkid網絡安全檢測工具
?? CPP
字號:
/****************************************************************/
/*																*/
/*  AboutCtrl.cpp												*/
/*																*/
/*  Implementation of the CAboutCtrl.cpp class.					*/
/*																*/
/*  Programmed by songbohr@gmail.com										*/
/*  Copyright dreamsoft Software Solutions 2006					*/
/*  http://www.dream2fly.net									*/
/*																*/
/*  Last updated: 01 November 2006								*/
/*																*/
/****************************************************************/


#include "stdafx.h"
#include "resource.h"
#include "AboutCtrl.h"
#include <math.h>

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

// convert degrees to radians
double deg2rad(int angle) 
{
	// (angle / 180) * 3.14159265359
	return angle * 0.0174;
}


CAboutCtrl::CAboutCtrl()
{
	m_hCreditsDC = NULL;
	m_hLogoDC = NULL;
	m_hBackgroundDC = NULL;
	m_hMemDC = NULL;

	m_cxLogo = 0;
	m_cyLogo = 0;
	m_xPos = 0;
	m_yPos = 0; 

	m_strCredits = "\tCAboutCtrl\n\n"
		"\rProgrammed by:\n"
		"songbohr@163.com\n\n"
		"Copyright (c)2006 夢軟科技有限公司\n"
		"All right reserved.\n\n"
		"\rhttp://www.dream2fly.net\n";
}


CAboutCtrl::~CAboutCtrl()
{
	// clean up
	if (m_hCreditsDC != NULL)
		DeleteDC(m_hCreditsDC);
	if (m_hLogoDC != NULL)
		DeleteDC(m_hLogoDC);
	if (m_hBackgroundDC != NULL)
		DeleteDC(m_hBackgroundDC);
	if (m_hMemDC != NULL)
		DeleteDC(m_hMemDC);
}


BEGIN_MESSAGE_MAP(CAboutCtrl, CStatic)
	//{{AFX_MSG_MAP(CAboutCtrl)
	ON_WM_PAINT()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : OnPaint											*/
/* Description   : Called when the application makes a request to	*/
/*				   repaint a portion of the window.					*/
/*																	*/
/********************************************************************/
void CAboutCtrl::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
}


/********************************************************************/
/*																	*/
/* Function name : Initialize										*/
/* Description   : Initialize some stuff							*/
/*																	*/
/********************************************************************/
void CAboutCtrl::Initialize()
{
	int cx, cy;

	// First time calling , do some init (loading pictures and create's some Hdc
	m_xAngle = 180;	// logo x angle
	m_yAngle = 60;	// logo y angle
	m_nSpeed = 6;	// spin speed

	m_cxData = 220;
	m_cyData = 300;

	CRect rect;
	GetClientRect(rect);

	CDC *pDC = GetDC();

	// create credits dc
	LoadCredits(m_hCreditsDC, m_cxData, m_cyData, pDC->m_hDC);
	// Load logo and creates logo dc
	LoadPicture(IDB_LOGO, m_hLogoDC, m_cxLogo, m_cyLogo, pDC->m_hDC);
	// Load Backgroundpicture and creates background DC
	LoadPicture(IDB_BACKGROUND, m_hBackgroundDC, cx, cy, pDC->m_hDC); 
	// create work area
	LoadPicture(0, m_hMemDC, cx, cy, pDC->m_hDC);

	// set scroll counter
	m_nCounter = rect.Height();

	ReleaseDC(pDC);
}


/********************************************************************/
/*																	*/
/* Function name : PreSubclassWindow								*/
/* Description   : Called before the window is subclassed.			*/
/*																	*/
/********************************************************************/
void CAboutCtrl::PreSubclassWindow() 
{
	// initialze dc's
	Initialize();	
	// start animation
	SetTimer(1, 40, NULL);

	CStatic::PreSubclassWindow();
}


/********************************************************************/
/*																	*/
/* Function name : OnTimer											*/
/* Description   : Update display									*/
/*																	*/
/********************************************************************/
void CAboutCtrl::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == 1)
	{
		AnimateLogo();
	}

	CStatic::OnTimer(nIDEvent);
}


/********************************************************************/
/*																	*/
/* Function name : AnimateLogo										*/
/* Description   : Animate 'flying' logo							*/
/*																	*/
/********************************************************************/
void CAboutCtrl::AnimateLogo()
{
	CRect rect;
	GetClientRect(rect);

	// move from left to right
	m_xPos = m_xPos + 2;
	if (m_xPos > rect.Width())
	{	
		m_xPos = -m_cxLogo / 2;
	}

	// move from top to bottom
	m_yPos = m_yPos + 1;
	if (m_yPos > rect.Height())
	{
		m_yPos = -m_cyLogo;
	}

	// copy background in memory bitmap
	BitBlt(m_hMemDC, 0, 0, rect.Width(), rect.Height(), m_hBackgroundDC, 0, 0, SRCCOPY);

	for (int i = 1; i < m_cxLogo; i++)
	{
		// copy logo with sinus effect in memory dc
		BitBlt(m_hMemDC, (int)(cos(deg2rad(m_xAngle + i)) * (m_cxLogo / 4.25) + m_xPos), 
			(int)(sin(deg2rad(m_yAngle + i)) * 10 + 2.5 + m_yPos), 
			1, m_cyLogo, m_hLogoDC, i, 0, SRCAND);
	}

	int yPos = m_cyData - m_nCounter - 100;

	// copy logo with sinus effect in memory dc
	if (m_nCounter > (rect.Height() - 30))
	{
		yPos = m_cyData - m_nCounter - 100;
	}

	// copy credits in memory dc
	BitBlt(m_hMemDC, 194, m_nCounter--, m_cxData, yPos, m_hCreditsDC, 0, 0, SRCAND);

	if (m_nCounter< -m_cyData)
	{
		m_nCounter = rect.Height();
	}

	CDC *pDC = GetDC();

	// and finally, copy memory bitmap to screen
	BitBlt(pDC->m_hDC, 0, 0, rect.Width(), rect.Height(), m_hMemDC, 0, 0, SRCCOPY);

	ReleaseDC(pDC);

	// any calculations follows
	m_xAngle = m_xAngle + (int)(m_nSpeed * 0.5);	// rotate logo x
	m_yAngle = m_yAngle + m_nSpeed * 2;				// rotate logo y

	// did full rotation ?
	if (m_xAngle >= 360)
	{
		// reset angle
		m_xAngle = 0;	
	}

	// did full rotation ?
	if (m_xAngle <= -180) 
	{
		m_nSpeed = m_nSpeed * -1;
	}

	if (m_yAngle >= 360)
	{
		m_yAngle = 0;
	}
}


/********************************************************************/
/*																	*/
/* Function name : LoadPicture										*/
/* Description   : Load picture from resource into device context	*/
/*																	*/
/********************************************************************/
void CAboutCtrl::LoadPicture(int nResourceID, HDC &hDestinationDC, int &nWidth, int &nHeight, HDC hDC)
{
	HDC hMemDC;
	HDC hdcCompatible;
	HBITMAP hbmScreen;

	if (nResourceID != 0)
	{
		// if resourceid is given, load bitmap
		HBITMAP hPicture = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(nResourceID));

		BITMAP bm;
		GetObject(hPicture, sizeof (BITMAP), (LPSTR)&bm);

		hMemDC = CreateCompatibleDC(hDC);

		HBITMAP hOldBMP = (HBITMAP)SelectObject(hMemDC, hPicture);

		nWidth = bm.bmWidth;
		nHeight = bm.bmHeight;

		// Create the DC
		hdcCompatible = CreateCompatibleDC(hDC);    
		// Temporary memory bitmap
		hbmScreen = CreateCompatibleBitmap(hDC, nWidth, nHeight);

		// select bitmap into dc
		if (SelectObject(hdcCompatible, hbmScreen) == NULL)
		{
			// return null
			hDestinationDC = NULL;                                        
		}
		else 
		{
			// return the DC
			hDestinationDC = hdcCompatible;
		}

		if (hDestinationDC)
			BitBlt(hDestinationDC, 0, 0, nWidth, nHeight, hMemDC, 0, 0, SRCCOPY);

		SelectObject(hMemDC, hOldBMP);

		// Release temporary stuff
		DeleteDC(hMemDC);
		DeleteObject(hbmScreen);
		DeleteObject(hPicture);
	}
	else	// if no resourceid is given, create empty DC with specified width and height
	{
		// create the DC
		hdcCompatible = CreateCompatibleDC(hDC);			
		// temporary memory bitmap
		hbmScreen = CreateCompatibleBitmap(hDC, nWidth, nHeight);		
		// if the function fails
		if (SelectObject(hdcCompatible, hbmScreen) == NULL)
		{
			// return null
			hDestinationDC = NULL;
		}
		else
		{
			// if it succeeds, return the DC
			hDestinationDC = hdcCompatible;                                     
		}
		DeleteObject(hbmScreen);
	}
}


/********************************************************************/
/*																	*/
/* Function name : LoadCredits										*/
/* Description   : Create credits picture into device context		*/
/*																	*/
/********************************************************************/
void CAboutCtrl::LoadCredits(HDC &hDestinationDC, int nWidth, int nHeight, HDC hDC)
{
	HDC hdcCompatible;
	HBITMAP hbmScreen;

	// Create the DC
	hdcCompatible = CreateCompatibleDC(hDC);			
	// Temporary bitmap
	hbmScreen = CreateCompatibleBitmap(hDC, nWidth, nHeight);		
	// if the function fails
	if (SelectObject(hdcCompatible, hbmScreen) == NULL)
	{
		// return null
		hDC = NULL;
	}
	else
	{
		// if it succeeds, return the DC
		hDestinationDC = hdcCompatible;
		RECT rc;

		rc.top = 0;
		rc.left = 0;
		rc.bottom = nHeight;
		rc.right = nWidth;

		HFONT pOldFont;
		HFONT hFontTahoma, hFontBold, hFontNormal;
		FillRect(hDestinationDC, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));

		// create a bunch of fonts
		hFontTahoma = CreateFont(20, 0, 0, 0, 
			FW_BOLD, FALSE, FALSE, 0, 
			ANSI_CHARSET,
			OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS,
			PROOF_QUALITY,
			VARIABLE_PITCH | 0x04 | FF_DONTCARE,
			(LPSTR)"Arial");

		hFontBold = CreateFont(14, 0, 0, 0, 
			FW_BOLD, FALSE, FALSE, 0, 
			ANSI_CHARSET,
			OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS,
			PROOF_QUALITY,
			VARIABLE_PITCH | 0x04 | FF_DONTCARE,
			(LPSTR)"Arial");

		hFontNormal = CreateFont(14, 0, 0, 0, 
			FALSE, FALSE, FALSE, 0, 
			ANSI_CHARSET,
			OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS,
			PROOF_QUALITY,
			VARIABLE_PITCH | 0x04 | FF_DONTCARE,
			(LPSTR)"Arial");


		CString strSub;
		int nCount=0;
		// draw each line, based on specified type
		while(AfxExtractSubString(strSub, m_strCredits, nCount++, '\n'))
		{
			TCHAR nType = 0;
			COLORREF oldColor;

			if (!strSub.IsEmpty())
				nType = strSub.GetAt(0);

			switch(nType)
			{
			case '\t':	// title
				oldColor = SetTextColor(hDestinationDC, RGB(16,140,231));
				pOldFont = (HFONT)SelectObject(hDestinationDC, hFontTahoma);
				strSub.TrimLeft('\t');
				DrawText(hDestinationDC, strSub, strSub.GetLength(), &rc, DT_TOP|DT_LEFT|DT_NOPREFIX | DT_SINGLELINE);
				break;
			case '\r':	// bold
				oldColor = SetTextColor(hDestinationDC, RGB(0,0,0));
				pOldFont = (HFONT)SelectObject(hDestinationDC, hFontBold);
				strSub.TrimLeft('\r');
				DrawText(hDestinationDC, strSub, strSub.GetLength(), &rc, DT_TOP|DT_LEFT|DT_NOPREFIX | DT_SINGLELINE);
				break;
			default:	// normal
				oldColor = SetTextColor(hDestinationDC, RGB(0,0,0));
				pOldFont = (HFONT)SelectObject(hDestinationDC, hFontNormal);
				DrawText(hDestinationDC, strSub, strSub.GetLength(), &rc, DT_TOP|DT_LEFT|DT_NOPREFIX | DT_SINGLELINE);
				break;
			}
			// next line
			TEXTMETRIC tm;  
			GetTextMetrics(hDestinationDC, &tm);
			rc.top += tm.tmHeight;

			// set back old values
			SetTextColor(hDestinationDC, oldColor);
			SelectObject(hDestinationDC, pOldFont);
		}
		// clean up
		DeleteObject(hFontBold);
		DeleteObject(hFontNormal);
		DeleteObject(hFontTahoma);
	}
	DeleteObject(hbmScreen);
}


/********************************************************************/
/*																	*/
/* Function name : SetCredits										*/
/* Description   : Member function to set credits text.				*/
/*																	*/
/********************************************************************/
void CAboutCtrl::SetCredits(LPCTSTR lpszCredits)
{
	m_strCredits = lpszCredits;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人91porn| 日韩免费一区二区| 久久成人免费网| 亚洲高清一区二区三区| 亚洲欧洲成人自拍| 久久精品视频在线看| 欧美r级电影在线观看| 69av一区二区三区| 欧美日韩精品高清| 欧美性xxxxxx少妇| 91免费版在线| 91精彩视频在线观看| 99精品在线免费| 色婷婷综合五月| 欧美丝袜第三区| 欧美老肥妇做.爰bbww视频| 欧美在线观看视频一区二区| 欧美性生活一区| 欧美日韩国产另类不卡| 欧美色涩在线第一页| 欧美美女直播网站| 欧美高清www午色夜在线视频| 欧美人动与zoxxxx乱| 欧美一区二区美女| 久久嫩草精品久久久精品| 精品国产91乱码一区二区三区| 久久亚洲捆绑美女| 国产欧美精品一区二区色综合朱莉| 欧美国产视频在线| 一区视频在线播放| 亚洲成人第一页| 蓝色福利精品导航| 成人av电影观看| 在线亚洲+欧美+日本专区| 欧美三级乱人伦电影| 91麻豆精品国产无毒不卡在线观看 | 日本精品免费观看高清观看| 在线观看亚洲一区| 欧美另类久久久品| 成人欧美一区二区三区1314| 亚洲高清免费在线| 蜜桃av一区二区| 成人a免费在线看| 精品污污网站免费看| 日韩精品一区二区三区中文精品| 国产精品国产三级国产有无不卡| 亚洲成a人片综合在线| 久久69国产一区二区蜜臀| www.亚洲色图| 日韩三级视频中文字幕| 亚洲欧洲av一区二区三区久久| 天堂资源在线中文精品| 国产成人在线视频免费播放| 欧美丝袜丝交足nylons| 国产午夜久久久久| 日本不卡的三区四区五区| www.66久久| 久久久久亚洲蜜桃| 午夜私人影院久久久久| 成人av资源站| 精品国精品国产尤物美女| 亚洲综合一区在线| 成人一区二区三区视频| 欧美肥胖老妇做爰| 亚洲精品水蜜桃| 成人国产精品免费观看| 精品成人一区二区三区| 日韩国产精品久久久| 91免费视频网址| 国产精品久久久久久久久久久免费看 | 成人免费观看av| 欧美电影精品一区二区| 亚洲一区二区三区视频在线播放| thepron国产精品| 久久久亚洲精品石原莉奈 | 欧美午夜精品电影| 成人欧美一区二区三区视频网页| 国产成人精品免费网站| 精品日韩成人av| 久久99久久久久久久久久久| 欧美人狂配大交3d怪物一区 | 欧美日本一区二区三区| 亚洲欧美日韩国产一区二区三区| 成人av综合在线| 中文字幕av资源一区| 国产成人午夜精品影院观看视频 | 玉足女爽爽91| 94-欧美-setu| 亚洲男人电影天堂| 91在线视频在线| 亚洲女人****多毛耸耸8| 风间由美一区二区av101| 国产三级欧美三级日产三级99| 国产精品主播直播| 久久毛片高清国产| 国产成人综合视频| 国产精品二三区| 色婷婷精品大在线视频| 一区二区理论电影在线观看| 欧美三区免费完整视频在线观看| 天天色综合成人网| 日韩一本二本av| 国产精品一二三四| 亚洲国产成人自拍| 在线中文字幕不卡| 亚洲成精国产精品女| 精品免费日韩av| 粉嫩嫩av羞羞动漫久久久| 综合久久国产九一剧情麻豆| 欧美探花视频资源| 日本免费在线视频不卡一不卡二| 日韩欧美一级片| 成人av综合在线| 香蕉成人啪国产精品视频综合网| 日韩欧美中文字幕一区| 国产精品综合视频| 亚洲精品中文在线影院| 欧美疯狂做受xxxx富婆| 国产麻豆日韩欧美久久| 亚洲免费高清视频在线| 日韩一区二区三区免费看 | 亚洲天堂免费看| 日韩亚洲欧美一区| 成人性色生活片| 免费在线观看精品| 国产精品成人免费| 日韩欧美国产麻豆| 色婷婷av一区二区三区gif| 蜜芽一区二区三区| 亚洲女子a中天字幕| 精品处破学生在线二十三| 色婷婷av久久久久久久| 国产精品1区2区| 日韩在线观看一区二区| 成人免费视频在线观看| 日韩欧美在线综合网| 91精品1区2区| av电影在线观看完整版一区二区| 日韩精品三区四区| 亚洲欧美视频在线观看视频| 久久久蜜桃精品| 欧美一区二区福利视频| 色综合久久99| 99精品视频在线播放观看| 国产一区二区在线影院| 日本视频在线一区| 亚洲午夜激情av| 中文字幕一区二区三区不卡 | 国产精品69久久久久水密桃| 美女在线观看视频一区二区| 亚洲国产成人91porn| 亚洲天堂精品视频| 国产清纯在线一区二区www| 精品国产麻豆免费人成网站| 欧美精品久久一区| 在线观看国产91| 日本伦理一区二区| 色综合色综合色综合| 99久久久精品| 日韩欧美你懂的| 欧美顶级少妇做爰| 欧美精品日韩综合在线| 欧美日韩成人综合天天影院| 欧美日韩中字一区| 在线中文字幕不卡| 在线观看91视频| 欧美精品一卡两卡| 91精品国产综合久久精品图片 | 久久久久久久电影| 欧美成人一区二区三区在线观看| 日韩视频一区在线观看| 欧美一二区视频| 国产人成亚洲第一网站在线播放| 欧美国产精品中文字幕| 国产欧美一区二区精品性| 欧美激情一区二区三区不卡| 中文一区二区在线观看| 综合在线观看色| 日日夜夜免费精品| 伦理电影国产精品| 国模无码大尺度一区二区三区| 国产毛片精品一区| 97久久超碰精品国产| 在线观看日韩av先锋影音电影院| 欧美卡1卡2卡| 2023国产精品自拍| 亚洲欧美在线观看| 亚州成人在线电影| 国内精品伊人久久久久av一坑| 国产91丝袜在线播放0| 97久久精品人人澡人人爽| 欧美丰满嫩嫩电影| 国产欧美日韩一区二区三区在线观看 | 国产欧美精品国产国产专区| 亚洲精品成人少妇| 免费欧美在线视频| av亚洲产国偷v产偷v自拍| 欧美久久久久久久久中文字幕| 国产午夜亚洲精品不卡| 亚洲午夜影视影院在线观看|