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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? label.cpp

?? 經(jīng)過(guò)測(cè)試確實(shí)可行
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// Label.cpp : implementation file
//

#include "stdafx.h"
#include "Resource.h"
#include "Label.h"

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

BEGIN_MESSAGE_MAP(CLabel, CStatic)
	//{{AFX_MSG_MAP(CLabel)
	ON_WM_TIMER()
	ON_WM_LBUTTONDOWN()
	ON_WM_SETCURSOR()
	ON_WM_SYSCOLORCHANGE()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLabel Version 1.2
//
// From now on I'll try to keep a log of fixes and enhancements...
// 
// The new feature were added due to the response of people.
// All I ask is to all you programmers out there, is if you add, fix or
// enhance this code, sent me a copy and I'll send the copy on to www.codeguru.com
//
// Happy hacking :)
// 
// New features include:
//
// A. Support for 3D Fonts
// B. Support for background transparency
// C. More comments provided
// D. If alignment is 'centered' and the window text is seperated by '\r\n'
//	  the will be centered accordingly - requested by someone @ nasa ;)
// E. Support for font rotation.
// F. Respond to System Color Change
// G. OnPaint improved performance - using Double Buffering Technique
//
// Thanks to:
// Mark McDowell	- For suggestion on 'Increasing the flexibility of "hypertext" setting...'
// Erich Ruth		- For suggestion on 'Font Rotation'
//

/////////////////////////////////////////////////////////////////////////////
// CLabel Version 1.3
//
// A. Added SS_LEFTNOWORDWRAP to include wordwrap
// B. Fix repainting problem 
// C. Fix SetBkColor
// D. Added SS_CENTER

// Thanks to:
// Marius						- Added styling problem.
// Azing Vondeling & Broker		- Spotting painting Problem.
// Mel Stober					- Back Color & SS_CENTER
// 
/////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::CLabel
//
// Description:		Default contructor
//
// INPUTS:          
// 
// RETURNS:         
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				26/08/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////
CLabel::CLabel()
{
	m_crText = GetSysColor(COLOR_WINDOWTEXT);

// 1.1
	m_hBackBrush = NULL;


	::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT),sizeof(m_lf),&m_lf);

	m_font.CreateFontIndirect(&m_lf);
	m_bTimer =			FALSE;
	m_bState =			FALSE;
	m_bTransparent =	FALSE;
	m_bLink =			TRUE;
	m_hCursor =			NULL;
	m_Type =			None;
	m_bFont3d =			FALSE;
	m_bNotifyParent =	FALSE;
	m_bToolTips =		FALSE;
	m_bRotation =		FALSE;
	
	m_hwndBrush = ::CreateSolidBrush(GetSysColor(COLOR_3DFACE));
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::~CLabel
//
// Description:		
//
// INPUTS:          
// 
// RETURNS:         
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				26/08/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////
CLabel::~CLabel()
{
	// Clean up
	m_font.DeleteObject();
	::DeleteObject(m_hwndBrush);
	::DeleteObject(m_hBackBrush);
	
}


//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::ReconstructFont
//
// Description:		Helper function to build font after it was changed
//
// INPUTS:          
// 
// RETURNS:         
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				26/08/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////
void CLabel::ReconstructFont()
{
	m_font.DeleteObject();
	BOOL bCreated = m_font.CreateFontIndirect(&m_lf);

	ASSERT(bCreated);
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::OnPaint
//
// Description:		Handles all the drawing code for the label
//
// INPUTS:          
// 
// RETURNS:         
//
// NOTES:			Called by Windows... not by USER
//					Probably needs tiding up a some point.
//					Different states will require this code to be reworked.
//
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				22/10/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////

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

	DWORD dwFlags = 0;

	CRect rc;
	GetClientRect(rc);
	CString strText;
	GetWindowText(strText);
	CBitmap bmp;


	///////////////////////////////////////////////////////
	//
	// Set up for double buffering...
	//
	CDC* pDCMem;

	if (!m_bTransparent)
	{
		pDCMem = new CDC;
		pDCMem->CreateCompatibleDC(&dc);
		bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
		pDCMem->SelectObject(&bmp);
	}
	else
	{
		pDCMem = &dc;
	}

	UINT nMode = pDCMem->SetBkMode(TRANSPARENT);


	COLORREF crText = pDCMem->SetTextColor(m_crText);
	CFont *pOldFont = pDCMem->SelectObject(&m_font);


	// Fill in backgound if not transparent
	if (!m_bTransparent)
	{
		CBrush br;
		
		if (m_bState && m_Type == Background)
		{
			if (m_hBackBrush != NULL)
				br.Attach(m_hBackBrush);
			else
				br.Attach(m_hwndBrush);
		}
		else
		{
			if (m_hBackBrush != NULL)
				br.Attach(m_hBackBrush);
			else
				br.Attach(m_hwndBrush);
		}
				
		pDCMem->FillRect(rc,&br);

		br.Detach();
	}
	

	// If the text is flashing turn the text color on
	// then to the color of the window background.

	LOGBRUSH lb;
	ZeroMemory(&lb,sizeof(lb));
	::GetObject(m_hBackBrush,sizeof(lb),&lb);


	// Something to do with flashing
	if (!m_bState && m_Type == Text)
		pDCMem->SetTextColor(lb.lbColor);


	if (!(GetStyle() & SS_LEFTNOWORDWRAP))
		dwFlags |= DT_WORDBREAK;

	if (GetStyle() & SS_LEFT)
		dwFlags = DT_LEFT;

	if (GetStyle() & SS_RIGHT)
		dwFlags = DT_RIGHT;

	if (GetStyle() & SS_CENTER)
		dwFlags = DT_CENTER;



	// If the text centered make an assumtion that
	// the will want to center verticly as well
	if (GetStyle() & SS_CENTERIMAGE)
	{
		dwFlags = DT_CENTER;

		// Apply 
		if (strText.Find("\r\n") == -1)
		{
			dwFlags |= DT_VCENTER;

			// And because DT_VCENTER only works with single lines
			dwFlags |= DT_SINGLELINE; 
		}
	}

	//
	// 3333   DDDDD
	//     3  D    D
	//   33   D     D    E F X 
	//     3  D    D
	// 3333   DDDDD
	//
	//
	if (m_bRotation)
	{
		int nAlign = pDCMem->SetTextAlign (TA_BASELINE);

		CPoint pt;
		GetViewportOrgEx (pDCMem->m_hDC,&pt) ;
		SetViewportOrgEx (pDCMem->m_hDC,rc.Width() / 2, rc.Height() / 2, NULL) ;
		pDCMem->TextOut (0, 0, strText) ;
		SetViewportOrgEx (pDCMem->m_hDC,pt.x / 2, pt.y / 2, NULL) ;
		pDCMem->SetTextAlign (nAlign);
	}
	else
	{
		pDCMem->DrawText(strText,rc,dwFlags);
		if (m_bFont3d)
		{
			pDCMem->SetTextColor(RGB(255,255,255));

			if (m_3dType == Raised)
				rc.OffsetRect(-1,-1);
			else
				rc.OffsetRect(1,1);

			pDCMem->DrawText(strText,rc,dwFlags);
			m_3dType;

		}
	}

	// Restore DC's State
	pDCMem->SetBkMode(nMode);
	pDCMem->SelectObject(pOldFont);
	pDCMem->SetTextColor(crText);

	if (!m_bTransparent)
	{
		dc.BitBlt(0,0,rc.Width(),rc.Height(),pDCMem,0,0,SRCCOPY);
		delete pDCMem;
	}
}


//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::OnTimer
//
// Description:		Used in conjunction with 'FLASH' functions
//
// INPUTS:          Windows API
// 
// RETURNS:         Windows API
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				26/08/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////
void CLabel::OnTimer(UINT nIDEvent) 
{

	m_bState = !m_bState;

	InvalidateRect(NULL,TRUE);
	UpdateWindow();
	
	CStatic::OnTimer(nIDEvent);
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::OnSetCursor
//
// Description:		Used in conjunction with 'LINK' function
//
// INPUTS:          Windows API
// 
// RETURNS:         Windows API
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				26/08/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////
BOOL CLabel::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{

	if (m_hCursor)
	{
		::SetCursor(m_hCursor);
		return TRUE;
	}

	return CStatic::OnSetCursor(pWnd, nHitTest, message);
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::OnLButtonDown
//
// Description:		Called when a link is click on
//
// INPUTS:          Windows API
// 
// RETURNS:         Windows API
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				26/08/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////
void CLabel::OnLButtonDown(UINT nFlags, CPoint point)
{
	if (m_bNotifyParent)
	{
		CString strLink;

		GetWindowText(strLink);
		ShellExecute(NULL,"open",strLink,NULL,NULL,SW_SHOWNORMAL);
	}
	else
	{
		// To use notification in parent window
		// Respond to a OnNotify in parent and disassemble the message
		//
		NMHDR nm;

		nm.hwndFrom = GetSafeHwnd();
		nm.idFrom  = GetDlgCtrlID();
		nm.code = NM_LINKCLICK;
		GetParent()->SendMessage(WM_NOTIFY,nm.idFrom,(LPARAM) &nm);
	}
		
	CStatic::OnLButtonDown(nFlags, point);
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// THE FUNCTIONS START HERE :----
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::SetText
//
// Description:		Short cut to set window text - caption - label
//
// INPUTS:          Text to use
// 
// RETURNS:         Reference to this
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments
// NT ALMOND				26/08/98    1.0     Origin
//
//////////////////////////////////////////////////////////////////////////
CLabel& CLabel::SetText(const CString& strText)
{

	SetWindowText(strText);
	Invalidate(FALSE);

	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CLabel::SetTextColor
//
// Description:		Sets the text color 
//
// INPUTS:          True or false
// 
// RETURNS:         Reference to 'this' object
//
// NOTES:			
// 
// MODIFICATIONS:
//
// Name                     Date        Version Comments

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品国产一二三区| 久久亚洲综合色| 国产精品女同互慰在线看| 亚洲欧美激情视频在线观看一区二区三区| 亚洲视频中文字幕| 午夜久久电影网| 国产一区二区精品久久99| 成人av电影观看| 欧美午夜一区二区三区| 欧美videos大乳护士334| 国产精品女同互慰在线看| 亚洲成人av一区二区| 国产在线一区二区综合免费视频| av中文一区二区三区| 欧美日韩日日摸| 国产日韩欧美一区二区三区乱码| 一区二区在线电影| 黑人巨大精品欧美一区| 99久久精品免费看| 欧美变态tickle挠乳网站| 亚洲欧美自拍偷拍| 美国av一区二区| 91理论电影在线观看| 日韩视频一区二区在线观看| 中文字幕一区二区三区不卡在线| 蜜桃久久久久久久| 色综合天天在线| 精品少妇一区二区| 亚洲成人1区2区| a级精品国产片在线观看| 欧美一区二区性放荡片| 亚洲欧洲另类国产综合| 久久精品国产免费看久久精品| 97精品视频在线观看自产线路二| 日韩欧美的一区| 亚洲午夜激情网页| 成人av免费在线观看| 日韩欧美电影一区| 午夜电影网亚洲视频| 高清视频一区二区| 欧美xxx久久| 日韩高清一区二区| 色狠狠一区二区| 国产精品久久久久久久久久免费看 | 国产福利一区二区三区在线视频| 欧美日韩久久久久久| 中文字幕中文字幕一区| 狠狠色丁香婷婷综合| 91麻豆精品91久久久久同性| 亚洲免费电影在线| 成人小视频免费观看| 欧美精品一区二区三| 青青草成人在线观看| 欧美日韩在线精品一区二区三区激情 | 午夜精品久久久久影视| 99精品国产视频| 欧美国产日本韩| 精品亚洲成a人在线观看| 制服丝袜日韩国产| 亚洲成人三级小说| 在线观看一区二区视频| 国产精品动漫网站| 粉嫩绯色av一区二区在线观看| 日韩精品中文字幕在线一区| 日韩中文字幕亚洲一区二区va在线 | 日韩欧美黄色影院| 奇米精品一区二区三区在线观看| 在线看日韩精品电影| 亚洲人成人一区二区在线观看| 福利电影一区二区三区| www国产精品av| 国产一区二区三区在线观看免费视频| 欧美一区二区三区不卡| 亚洲国产成人高清精品| 欧美日韩亚洲综合一区| 亚洲电影在线免费观看| 欧美麻豆精品久久久久久| 性欧美大战久久久久久久久| 欧美蜜桃一区二区三区| 日韩电影在线观看电影| 日韩一区二区不卡| 经典三级视频一区| 久久蜜桃av一区精品变态类天堂 | 久久伊人中文字幕| 国产自产2019最新不卡| 国产调教视频一区| 成人黄动漫网站免费app| 中文字幕一区二区在线播放| 91小视频在线观看| 亚洲午夜久久久久久久久久久 | 亚洲成人动漫在线免费观看| 欧美日韩精品一区二区三区| 日本三级韩国三级欧美三级| 日韩精品一区二区三区四区| 国产九九视频一区二区三区| 国产日韩v精品一区二区| 99久久综合色| 亚洲大片在线观看| 精品久久久网站| 粉嫩aⅴ一区二区三区四区五区 | 在线看日本不卡| 婷婷开心激情综合| 欧美va亚洲va在线观看蝴蝶网| 国产91精品在线观看| 一区二区三区四区乱视频| 欧美精品自拍偷拍动漫精品| 国产一区二区电影| 亚洲欧美综合另类在线卡通| 欧美福利电影网| 国产高清久久久久| 亚洲一区二区在线视频| 精品国产区一区| 91免费看片在线观看| 日韩一区精品字幕| 国产婷婷色一区二区三区| 日本韩国欧美国产| 精品一区二区三区欧美| 亚洲婷婷在线视频| 9191精品国产综合久久久久久| 国产九色sp调教91| 亚洲.国产.中文慕字在线| www国产成人免费观看视频 深夜成人网| 91亚洲永久精品| 久久精品国产精品亚洲精品| 国产精品免费aⅴ片在线观看| 欧美日韩亚洲国产综合| 成人中文字幕合集| 偷拍与自拍一区| 国产精品久久影院| 日韩区在线观看| 色综合夜色一区| 国产自产高清不卡| 午夜国产精品一区| 成人免费小视频| 欧美一区国产二区| 色婷婷综合久久久中文字幕| 九色综合狠狠综合久久| 亚洲综合小说图片| 欧美韩日一区二区三区| 欧美一区二区国产| 在线观看精品一区| 国产aⅴ综合色| 美女网站一区二区| 亚洲影视在线播放| 国产精品欧美极品| 久久先锋影音av鲁色资源网| 欧美日韩一级二级| 一本一道综合狠狠老| 国产成人无遮挡在线视频| 日本成人在线网站| 亚洲一区二区三区四区在线观看 | 成人美女视频在线观看| 免费xxxx性欧美18vr| 一区二区激情视频| 中文字幕在线不卡一区二区三区| 精品久久久三级丝袜| 欧美人与性动xxxx| 欧美性受极品xxxx喷水| 99在线精品免费| 国产不卡视频一区| 国产精品一区二区久久不卡| 午夜精品久久久久久久99樱桃| 日韩毛片高清在线播放| 国产精品久久久久三级| 国产日韩高清在线| 国产午夜精品久久久久久久| 2023国产精品| 亚洲精品在线免费观看视频| 欧美福利视频一区| 欧美高清视频一二三区| 欧美精品第1页| 欧美精品一级二级| 欧美久久一二区| 欧美高清激情brazzers| 在线成人免费视频| 欧美日韩精品是欧美日韩精品| 欧美三级午夜理伦三级中视频| 色老头久久综合| 欧美亚洲国产一区二区三区va| 日本福利一区二区| 一本色道久久综合精品竹菊| 97久久人人超碰| 在线观看视频一区二区欧美日韩| 色一情一乱一乱一91av| 91黄色免费观看| 欧美三级午夜理伦三级中视频| 欧美日韩视频专区在线播放| 欧美日韩一区二区三区免费看| 欧美日韩在线免费视频| 欧美一区二区在线播放| 精品成a人在线观看| 久久综合久久久久88| 国产欧美日韩一区二区三区在线观看| 国产日韩欧美制服另类| 亚洲欧洲美洲综合色网| 一二三四区精品视频| 午夜精品久久久久久久久久| 麻豆国产精品官网| 国产麻豆日韩欧美久久|