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

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

?? starwarsctrl.cpp

?? modbus PLC 模擬程序
?? CPP
字號:
/****************************************************************/
/*																                */
/*  StarWarsCtrl.cpp											             */
/*																                */
/*  Implementation of the CStarWarsCtrl.cpp class.				    */
/*																                */
/*  Programmed by Pablo van der Meer							       */
/*  Copyright Pablo Software Solutions 2002						    */
/*  http://www.pablovandermeer.nl								       */
/*																                */
/*  Last updated: 26 may 2002									          */
/*     Waviness added 2 Nov 02 - CDB                            */
/*																                */
/****************************************************************/


#include "stdafx.h"
#include "StarWarsCtrl.h"
#include <math.h>

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

#define getrandom(min,max) ((rand()%(int)(((max)+1)-(min)))+(min))


CStarWarsCtrl::CStarWarsCtrl()
{
	// protected bitmaps to restore the memory DC's
	m_pOldBitmap = NULL;

	m_Font.CreateFont(24, 0, 0, 0, FW_BOLD,
                       FALSE, FALSE, 0, ANSI_CHARSET,
                       OUT_DEFAULT_PRECIS, 
                       CLIP_DEFAULT_PRECIS,
                       DEFAULT_QUALITY, 
                       DEFAULT_PITCH|FF_SWISS, "Tahoma");
	m_nScrollSpeed = 2;
	m_nStarsSpeed = 30;
}

CStarWarsCtrl::~CStarWarsCtrl()
{
	if (m_pOldBitmap != NULL)
		m_MainDC.SelectObject(m_pOldBitmap);  
}


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


/********************************************************************/
/*																	*/
/* Function name : PreSubclassWindow								*/
/* Description   : Initialize some stuff							*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::PreSubclassWindow() 
{
	CClientDC dc(this);

	GetClientRect(m_rectClient);

	// initialize stars
	for (int i = 0; i < NUM_STARS; i++)
	{
		m_StarArray[i].x = getrandom(0, 1024);
		m_StarArray[i].x -= 512;
		m_StarArray[i].y = getrandom(0, 1024);
		m_StarArray[i].y -= 512;
		m_StarArray[i].z = getrandom(0, 512);
		m_StarArray[i].z -= 256;
	}
/*
	m_TextLines.Add("A long time ago");
	m_TextLines.Add("");
	m_TextLines.Add("in a galaxy far far away");
	m_TextLines.Add("");
	m_TextLines.Add("this application was programmed by");
	m_TextLines.Add("");
	m_TextLines.Add("Pablo van der Meer");
	m_TextLines.Add("");
	m_TextLines.Add("Have fun!");
*/	
	m_nScrollPos = m_rectClient.Height();

	// calculate speed so that it scroll the same speed on a different machine
	DWORD t1 = GetTickCount();
	InvalidateCtrl();
	DWORD t2 = GetTickCount();

	t2 -= t1; // = 50 on my system

	m_nScrollSpeed = (m_nScrollSpeed * t2)/50;

	SetTimer(1, 75, NULL);

	CStatic::PreSubclassWindow();
}


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

	// to avoid flicker, establish a memory dc, draw to it 
	// and then BitBlt it to the client
	memDC.CreateCompatibleDC(&dc);
	memBitmap.CreateCompatibleBitmap(&dc, m_rectClient.Width(), m_rectClient.Height());
	oldBitmap = (CBitmap *)memDC.SelectObject(&memBitmap);

	if (memDC.GetSafeHdc() != NULL)
	{
		// first drop the bitmap on the memory dc
		memDC.BitBlt(0, 0, m_rectClient.Width(), m_rectClient.Height(), &m_MainDC, 0, 0, SRCCOPY);
		// finally send the result to the display
		dc.BitBlt(0, 0, m_rectClient.Width(), m_rectClient.Height(), &memDC, 0, 0, SRCCOPY);
	}
	memDC.SelectObject(oldBitmap);
}


/********************************************************************/
/*																	*/
/* Function name : OnSize											*/
/* Description   : The framework calls this member function after	*/
/*				   the window抯 size has changed.					*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::OnSize(UINT nType, int cx, int cy) 
{
	CStatic::OnSize(nType, cx, cy);
	
	// OnSize automatically gets called during the setup of the control
	GetClientRect(m_rectClient);

	// destroy and recreate the main bitmap
	CClientDC dc(this);
	if (m_pOldBitmap && m_MainBitmap.GetSafeHandle() && m_MainDC.GetSafeHdc())
	{
		m_MainDC.SelectObject(m_pOldBitmap);
		m_MainBitmap.DeleteObject();
		m_MainBitmap.CreateCompatibleBitmap(&dc, m_rectClient.Width(), m_rectClient.Height());
		m_pOldBitmap = m_MainDC.SelectObject(&m_MainBitmap);
	}
}


/********************************************************************/
/*																	*/
/* Function name : DoStars											*/
/* Description   : Draw stars										*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::DoStars(CDC *pDC)
{
	m_MainDC.SetBkColor(RGB(0,0,0));
	m_MainDC.SetTextColor(RGB(255,255,255));
	m_MainDC.FillSolidRect(m_rectClient, RGB(0,0,0));

	int nFunFactor = 100;
	int x, y, z;
	for(int i = 0; i < NUM_STARS; i++)
	{
      m_StarArray[i].z = m_StarArray[i].z - m_nStarsSpeed;
      // wrap the starfield
      if (m_StarArray[i].z > 255)
			m_StarArray[i].z = -255;
      if (m_StarArray[i].z < -255)
			m_StarArray[i].z = 255;
      // work out star co-oridinates for the current "zoom" or window size  
		z = m_StarArray[i].z + 256;
      x = (m_StarArray[i].x * nFunFactor / z) + (m_rectClient.Width() / 2);
      y = (m_StarArray[i].y * nFunFactor / z) + (m_rectClient.Height() / 2);
		
		CPen myPen;

		// create a white pen which luminosity depends on the z position (for 3D effect!)
		int nColor = 255 - m_StarArray[i].z;
		myPen.CreatePen(PS_COSMETIC, 1, RGB(nColor,nColor,nColor));

		CPen *pOldPen = (CPen *)m_MainDC.SelectObject(&myPen);
		// draw star
		m_MainDC.Ellipse(CRect(x, y, x+3, y+3));
		m_MainDC.SelectObject(pOldPen);
    }
}


/********************************************************************/
/*																	*/
/* Function name : InvalidateCtrl									*/
/* Description   : Draw the Matrix to a bitmap.						*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::InvalidateCtrl()
{
	// in case we haven't established the memory dc's
	CClientDC dc(this);

	// if we don't have one yet, set up a memory dc for the control 
	if (m_MainDC.GetSafeHdc() == NULL)
	{
		m_MainDC.CreateCompatibleDC(&dc);
		m_MainBitmap.CreateCompatibleBitmap(&dc, m_rectClient.Width(), m_rectClient.Height());
		m_pOldBitmap = m_MainDC.SelectObject(&m_MainBitmap);
	}
  
	DoStars(&dc);	
	DoScrollText(&dc);

	// finally, force redraw
	InvalidateRect(m_rectClient);
} 


/********************************************************************/
/*																	*/
/* Function name : OnTimer											*/
/* Description   : Update display									*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == 1)
		InvalidateCtrl();

	CStatic::OnTimer(nIDEvent);
}

// -------------------------------------- RGBFor -----------------------------
// return an RGB value for the distance in the range 0-255
COLORREF RGBFor(int distance)
{
int RGcomponent;

   // clip all distances to 0 thru 255.
   if (distance >255)
      distance = 255;
   if (distance<0)
      distance = 0;
   // RED and GREEN are directly related to distance
   RGcomponent = distance;
   // B is always 0
   return (RGB(RGcomponent, RGcomponent, 0));
} // RGBFor


/********************************************************************/
/*																	*/
/* Function name : DoScrollText										*/
/* Description   : Do scrolling text like in the movie 'Star Wars'	*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::DoScrollText(CDC *pDC)
{
	int nPosX =0;
	int nPosY =0;

	CDC memDC;
	CBitmap memBitmap;
	CFont *oldFont;

	memDC.CreateCompatibleDC(pDC);
	memBitmap.CreateCompatibleBitmap(pDC, m_rectClient.Width(), m_rectClient.Height());
	memDC.SelectObject(&memBitmap);
	memDC.SetBkColor(RGB(0,0,0));
	memDC.SetTextColor(RGB(0,255,0));
    memDC.SetBkMode(TRANSPARENT);

	oldFont = memDC.SelectObject(&m_Font);

	// black
	memDC.BitBlt(0, 0, m_rectClient.Width(), m_rectClient.Height(), NULL, 0, 0, BLACKNESS);
	
	// draw Credits on the hidden Picture
	for(int i=0; i < m_TextLines.GetSize(); i++)
	{
   int waveEffect;   // CDB makes the text wave a little bit, and not move smooth
		// set position for this line
		CSize size = memDC.GetTextExtent(m_TextLines.GetAt(i));

		nPosY = m_nScrollPos + (i * size.cy);
      // CDB
      // this next bit will confuse most folk looking, but the original banners
      // used to have this wavy motion too.
      waveEffect = getrandom(0,1);
      if (0 == getrandom(0,1))
         nPosY -= waveEffect;

		if (nPosY > 0)
		{
			nPosX = (m_rectClient.Width() / 2) - (size.cx / 2);
         /*
			if (nPosY > 255)
			{
				memDC.SetTextColor(RGB(255, 255, 255));
			}
			else
			{
				// set fade color
				memDC.SetTextColor(RGB(nPosY, nPosY, nPosY));
			}
         */
         memDC.SetTextColor(RGBFor(nPosY));
			
			// print text
			memDC.TextOut(nPosX, nPosY, m_TextLines.GetAt(i));
		}
		else
		{
			// start all over ...
			if (i == (m_TextLines.GetSize()-1))
			{
				m_nScrollPos = m_rectClient.Height();
			}
		}
	}

	int nWidth = m_rectClient.Width();
	int nHeight = m_rectClient.Height();

	// shrink text from bottom to top to create Star Wars effect
	for (int y=0; y <nHeight; y++)
	{
		double nScale = (double)y/(double)nHeight;
		int nOffset = (int)(nWidth - nWidth*nScale)/2;
		m_MainDC.StretchBlt(nOffset, y, (int)(nWidth*nScale), 1, &memDC, 0, y, nWidth, 1, SRCPAINT);
	}

	// restore the font
	memDC.SelectObject(oldFont);

	// move text up one pixel
	m_nScrollPos = m_nScrollPos - m_nScrollSpeed;
}


/********************************************************************/
/*																	*/
/* Function name : SetScrollSpeed									*/
/* Description   : Set speed of scrolling							*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::SetScrollSpeed(int nSpeed)
{
	m_nScrollSpeed = nSpeed;
}


/********************************************************************/
/*																	*/
/* Function name : SetStarSpeed										*/
/* Description   : Set speed of the stars							*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::SetStarSpeed(int nSpeed)
{
	m_nStarsSpeed = nSpeed;
}


/********************************************************************/
/*																	*/
/* Function name : AddTextLine										*/
/* Description   : Add line to credits								*/
/*																	*/
/********************************************************************/
void CStarWarsCtrl::AddTextLine(LPCTSTR lpszText)
{
	m_TextLines.Add(lpszText);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品嫩草影院com| 日本乱码高清不卡字幕| 日韩国产在线观看一区| 欧美一区二区三区在线观看视频 | 日本免费在线视频不卡一不卡二| k8久久久一区二区三区| 欧美日韩在线不卡| 日韩视频免费观看高清完整版在线观看 | 中文字幕精品一区二区三区精品| 国产精品乱人伦中文| 亚洲女同ⅹxx女同tv| 久久99精品久久只有精品| 99精品热视频| 国产精品久久久久久久蜜臀| 欧美日韩一本到| 欧美国产一区二区| 久久国产三级精品| 日韩一级片网址| 午夜欧美视频在线观看 | 亚洲乱码国产乱码精品精的特点 | 久久久久久久久久电影| 日本大胆欧美人术艺术动态| 欧美在线视频你懂得| 亚洲精品日韩专区silk| 成人永久aaa| 国产亚洲精品aa午夜观看| 日韩电影在线免费观看| 这里只有精品99re| 美女视频网站久久| 日韩一区二区在线观看视频| 日本一区中文字幕| 26uuuu精品一区二区| 国产精品一区免费视频| 欧美激情一区不卡| 国产乱人伦偷精品视频免下载| 日韩午夜激情视频| 韩国一区二区视频| 亚洲欧洲日产国码二区| 国产精品不卡视频| 欧美老女人第四色| 久久99精品久久久久久国产越南| 日韩电影在线一区二区| 久久精品综合网| 欧美在线免费视屏| 日本欧美肥老太交大片| 国产精品久久毛片av大全日韩| 欧美午夜电影一区| 国产精品亚洲а∨天堂免在线| 国产精品国产精品国产专区不蜜| 一本大道av伊人久久综合| 久久精品国产99| 亚洲精选一二三| 国产片一区二区| 久久综合999| 欧美成人vr18sexvr| 欧美电影在哪看比较好| 在线看一区二区| a亚洲天堂av| 激情综合网激情| 韩国欧美国产一区| 天堂va蜜桃一区二区三区| 亚洲欧洲日产国码二区| 亚洲日本va午夜在线影院| 亚洲精品在线电影| 9191久久久久久久久久久| 成人激情文学综合网| 成人av资源在线观看| 成人一区在线观看| 成人精品国产免费网站| 成人app网站| 欧美性大战久久久久久久| 欧美日韩国产一级| 欧美tickling网站挠脚心| 久久久久国产精品人| 中文字幕一区二区视频| 一区二区视频在线| 免费高清在线视频一区·| 国产一区视频导航| 色综合久久久久综合体桃花网| 91在线观看地址| 欧美大黄免费观看| 久久婷婷国产综合精品青草| 亚洲狠狠丁香婷婷综合久久久| 亚洲五码中文字幕| 国产精品中文欧美| 欧美群妇大交群的观看方式| 欧美激情一区在线| 美女看a上一区| 色婷婷久久一区二区三区麻豆| 亚洲成人综合在线| 久久99深爱久久99精品| 欧美怡红院视频| 韩国理伦片一区二区三区在线播放 | 91免费国产在线观看| 久久综合九色综合97婷婷女人 | 亚洲欧洲成人精品av97| 偷窥国产亚洲免费视频| 91亚洲永久精品| 国产在线日韩欧美| 亚洲一区二区中文在线| 一本久久a久久精品亚洲 | 99热在这里有精品免费| wwww国产精品欧美| 国内外精品视频| 日韩成人免费看| 亚洲一区二区视频在线观看| 欧美在线免费播放| 午夜精品爽啪视频| 日韩欧美国产小视频| 国产精品1区二区.| 国产精品成人在线观看| 国产精品美日韩| 亚洲国产成人一区二区三区| av在线这里只有精品| 亚洲天堂a在线| 欧美中文字幕一二三区视频| 五月天中文字幕一区二区| 日韩欧美激情四射| 欧美激情综合网| 亚洲欧美中日韩| 欧美日韩不卡视频| 国产高清一区日本| 亚洲第一综合色| 国产欧美一区二区三区沐欲| 在线视频亚洲一区| 国产精品1区2区3区| 不卡视频一二三四| 欧美片在线播放| 国产成人午夜视频| 午夜精品视频在线观看| 亚洲欧美另类久久久精品2019| 日韩精品一区二区三区在线播放 | 性做久久久久久免费观看| 久久久久久久精| 久久久久亚洲蜜桃| 91精品国模一区二区三区| 一本久久精品一区二区| 99久久精品免费看国产免费软件| 亚洲精品一区二区三区福利| 在线精品国精品国产尤物884a| 99久久久久免费精品国产 | 开心九九激情九九欧美日韩精美视频电影 | 97久久人人超碰| 成人a区在线观看| 一本色道久久综合亚洲精品按摩| 成人短视频下载| 91麻豆国产福利在线观看| 91美女精品福利| 欧美日韩在线三级| 91精品免费在线| 中文字幕高清不卡| 亚洲国产精品影院| 美脚の诱脚舐め脚责91| 国产福利不卡视频| 一本一道久久a久久精品| 欧美午夜精品一区二区蜜桃 | 日韩成人午夜精品| 国产馆精品极品| 在线播放/欧美激情| 久久精品亚洲精品国产欧美kt∨| 亚洲三级小视频| 精品一区二区三区在线观看国产| 日韩写真欧美这视频| 国产欧美精品一区| 性久久久久久久久久久久| 国产九色精品成人porny | 国产激情一区二区三区| 欧美午夜电影一区| 亚洲欧洲99久久| 精品一区二区三区在线播放| 欧洲精品一区二区三区在线观看| 久久久精品tv| 狠狠色综合播放一区二区| 亚洲一区二区三区视频在线| 成人av电影在线网| 国产三级欧美三级日产三级99 | www.亚洲人| 久久久久99精品国产片| 秋霞成人午夜伦在线观看| 综合久久给合久久狠狠狠97色| 久久99精品国产麻豆婷婷| 欧美美女bb生活片| 五月婷婷欧美视频| 91精品国产欧美日韩| 免费观看30秒视频久久| 精品成人在线观看| 国产一区二区三区美女| 久久亚洲一级片| 99视频精品在线| 亚洲一级电影视频| 欧美色视频在线| 美女性感视频久久| 久久久www成人免费毛片麻豆 | 精品国精品自拍自在线| 极品瑜伽女神91| 成人免费一区二区三区视频| 欧美少妇性性性| 国产精品一区二区久激情瑜伽 | 国产精品久久看| 日韩三级精品电影久久久|