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

📄 creditsthread.cpp

📁 eMule0.44b的原代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	m_dcCredits.SetBkColor(MASK_RGB);
	m_dcCredits.SelectObject(pOldFont);

	// create the mask bitmap
	m_dcMask.CreateCompatibleDC(&m_dcScreen);
	m_bmpMask.CreateBitmap(m_nCreditsBmpWidth, m_nCreditsBmpHeight, 1, 1, NULL);

	// select the mask bitmap into the appropriate dc
	m_pbmpOldMask = m_dcMask.SelectObject(&m_bmpMask);

	// build mask based on transparent color
	m_dcMask.BitBlt(0, 0, m_nCreditsBmpWidth, m_nCreditsBmpHeight, &m_dcCredits, 0, 0, SRCCOPY);
}

void CCreditsThread::InitFonts()
{
	// create each font we'll need and add it to the fonts array

	CDC dcMem;
	dcMem.CreateCompatibleDC(&m_dc);
	CFont* pOldFont;
	int nTextHeight;

	LOGFONT lf;

	// font 0
	// SMALL ARIAL
	CFont* font0 = new CFont;
	memset((void*)&lf, 0, sizeof(lf));
	lf.lfHeight = 12;
	lf.lfWeight = 500;
	lf.lfQuality = NONANTIALIASED_QUALITY;
	_tcscpy(lf.lfFaceName, _T("Arial"));
	font0->CreateFontIndirect(&lf);
	m_arFonts.Add(font0);

	pOldFont = dcMem.SelectObject(font0);
	nTextHeight = dcMem.GetTextExtent(_T("Wy")).cy;
	m_arFontHeights.Add(nTextHeight);

	// font 1
	// MEDIUM BOLD ARIAL
	CFont* font1 = new CFont;
	memset((void*)&lf, 0, sizeof(lf));
	lf.lfHeight = 14;
	lf.lfWeight = 600;
	lf.lfQuality = NONANTIALIASED_QUALITY;
	_tcscpy(lf.lfFaceName, _T("Arial"));
	font1->CreateFontIndirect(&lf);
	m_arFonts.Add(font1);

	dcMem.SelectObject(font1);
	nTextHeight = dcMem.GetTextExtent(_T("Wy")).cy;
	m_arFontHeights.Add(nTextHeight);

	// font 2
	// LARGE ITALIC HEAVY BOLD TIMES ROMAN
	CFont* font2 = new CFont;
	memset((void*)&lf, 0, sizeof(lf));
	lf.lfHeight = 16;
	lf.lfWeight = 700;
	//lf.lfItalic = TRUE;
	lf.lfQuality = afxData.bWin95 ? NONANTIALIASED_QUALITY : ANTIALIASED_QUALITY;
	_tcscpy(lf.lfFaceName, _T("Arial"));
	font2->CreateFontIndirect(&lf);
	m_arFonts.Add(font2);

	dcMem.SelectObject(font2);
	nTextHeight = dcMem.GetTextExtent(_T("Wy")).cy;
	m_arFontHeights.Add(nTextHeight);

	// font 3
	CFont* font3 = new CFont;
	memset((void*)&lf, 0, sizeof(lf));
	lf.lfHeight = 25;
	lf.lfWeight = 900;
	lf.lfQuality = afxData.bWin95 ? NONANTIALIASED_QUALITY : ANTIALIASED_QUALITY;
	_tcscpy(lf.lfFaceName, _T("Arial"));
	font3->CreateFontIndirect(&lf);
	m_arFonts.Add(font3);

	dcMem.SelectObject(font3);
	nTextHeight = dcMem.GetTextExtent(_T("Wy")).cy;
	m_arFontHeights.Add(nTextHeight);

	dcMem.SelectObject(pOldFont);
}

void CCreditsThread::InitColors()
{
	// define each color we'll be using

	m_arColors.Add(PALETTERGB(0, 0, 0));	// 0 = BLACK
	m_arColors.Add(PALETTERGB(90, 90, 90));	// 1 = very dark gray
	m_arColors.Add(PALETTERGB(128, 128, 128));		// 2 = DARK GRAY
	m_arColors.Add(PALETTERGB(192, 192, 192));	// 3 = LIGHT GRAY
	m_arColors.Add(PALETTERGB(200, 50, 50));	// 4 = very light gray
	m_arColors.Add(PALETTERGB(255, 255, 128));	// 5 white
	m_arColors.Add(PALETTERGB(0, 0, 128));	// 6 dark blue
	m_arColors.Add(PALETTERGB(128, 128, 255));	// 7 light blue
	m_arColors.Add(PALETTERGB(0, 106, 0));	// 8 dark green
}

void CCreditsThread::InitText()
{
	// 1st pair of digits identifies the font to use
	// 2nd pair of digits identifies the color to use
	// B = Bitmap
	// S = Space (moves down the specified number of pixels)

	CString sTmp;
	
	/*
		You may NOT modify this copyright message. You may add your name, if you
		changed or improved this code, but you mot not delete any part of this message,
		make it invisible etc.
	*/

	// start at the bottom of the screen
	sTmp.Format(_T("S:%d"), m_rectScreen.Height());
	m_arCredits.Add(sTmp);

	m_arCredits.Add(_T("03:00:eMule"));
	sTmp.Format(_T("02:01:Version %s"),theApp.m_strCurVersionLong);
#ifdef _UNICODE
	sTmp += _T(" Unicode");
#endif
	m_arCredits.Add(sTmp);
	m_arCredits.Add(_T("01:06:Copyright (C) 2002-2004 Merkur"));
	m_arCredits.Add(_T("S:50"));
	m_arCredits.Add(_T("02:04:Developers"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Unknown1"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Ornis"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Bluecow"));

	m_arCredits.Add(_T("S:50"));

	m_arCredits.Add(_T("02:04:Tester"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Sony666"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Monk"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Myxin"));
	m_arCredits.Add(_T("S:5"));
	

	m_arCredits.Add(_T("S:50"));
	m_arCredits.Add(_T("02:04:Retired Members"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Merkur (the Founder)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:tecxx"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Pach2"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Juanjo"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Barry"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Dirus"));
	m_arCredits.Add(_T("S:5"));
	

	m_arCredits.Add(_T("S:50"));
	m_arCredits.Add(_T("02:04:Thanks to these programmers"));
	m_arCredits.Add(_T("02:04:for publishing useful codeparts"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Paolo Messina (ResizableDialog class)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:6:PJ Naughter (HttpDownload Dialog)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Jim Connor (Scrolling Credits)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Yury Goltsman (extended Progressbar)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Magomed G. Abdurakhmanov (Hyperlink ctrl)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Arthur Westerman (Titled menu)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Tim Kosse (AsyncSocket-Proxysupport)"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:Keith Rule (Memory DC)"));
	m_arCredits.Add(_T("S:50"));

	m_arCredits.Add(_T("02:07:And thanks to the following"));
	m_arCredits.Add(_T("02:07:people for translating eMule"));
	m_arCredits.Add(_T("02:07:into different languages:"));
	m_arCredits.Add(_T("S:20"));
	m_arCredits.Add(_T("01:06:Bulgarian: DapKo"));
	m_arCredits.Add(_T("S:05"));	
	m_arCredits.Add(_T("01:06:Catalan: LeChuck"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Chinese simplyfied: Tim Chen, Qilu T."));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Chinese Traditional: CML, Donlong, Ryan"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Czech: Patejl"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Danish: Tiede, Cirrus, Itchy"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Estonian: Symbio"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Dutch: Mr.Bean"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Finnish: Nikerabbit"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:French: Emzc, Lalrobin"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Galician: Juan, Emilio R."));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Greek: Michael Papadakis"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Italian: Trevi, FrankyFive"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Japanese: Shinro T."));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Hebrew: Avi-3k"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Hungarian: r0ll3r"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Korean: pooz"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Latvian: Ai"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Lithuanian: Daan"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Norwegian: Iznogood"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Polish: Tomasz \"TMouse\" Broniarek"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Portugese: Filipe, Lu韘 Claro"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Portugese Brasilian: DarthMaul,Brasco"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Romanian: Dragos"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Russian: T-Mac, BRMAIL"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Slowenian: Rok Kralj"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Spanish Castellano: Azuredraco, Javier L., |_Hell_|"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Swedish: Andre"));
	m_arCredits.Add(_T("S:05"));
	m_arCredits.Add(_T("01:06:Turkish: Burak Y."));

	m_arCredits.Add(_T("S:50"));
	m_arCredits.Add(_T("02:04:Part of eMule is based on Kademlia:"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("02:04:Peer-to-peer routing based on the XOR metric."));
	m_arCredits.Add(_T("S:10"));
	m_arCredits.Add(_T("01:06:Copyright (C) 2002 Petar Maymounkov"));
	m_arCredits.Add(_T("S:5"));
	m_arCredits.Add(_T("01:06:http://kademlia.scs.cs.nyu.edu"));

	// pause before repeating
	m_arCredits.Add(_T("S:100"));
}

int CCreditsThread::CalcCreditsHeight()
{
	int nHeight = 0;

	for(int n = 0; n < m_arCredits.GetSize(); n++)
	{
		CString sType = m_arCredits.GetAt(n).Left(1);

		if(sType == 'B')
		{
			// it's a bitmap

			CBitmap bmp;
			if (! bmp.LoadBitmap(m_arCredits.GetAt(n).Mid(2)))
			{
				CString str; 
				str.Format(_T("Could not find bitmap resource \"%s\". Be sure to assign the bitmap a QUOTED resource name"), m_arCredits.GetAt(n).Mid(2)); 
				AfxMessageBox(str); 
				return -1; 
			}

			BITMAP bmInfo;
			bmp.GetBitmap(&bmInfo);

			nHeight += bmInfo.bmHeight;
		}
		else if(sType == 'S')
		{
			// it's a vertical space

			nHeight += _ttoi(m_arCredits.GetAt(n).Mid(2));
		}
		else
		{
			// it's a text string

			int nFont = _ttoi(m_arCredits.GetAt(n).Left(2));
			nHeight += m_arFontHeights.GetAt(nFont);
		}
	}

	return nHeight;
}

⌨️ 快捷键说明

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