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

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

?? label.cpp

?? 經過測試確實可行
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草97国产精品免费观看无弹窗版| 亚洲午夜免费电影| 一本色道久久综合亚洲精品按摩| 三级亚洲高清视频| 国产精品视频在线看| 欧美精品高清视频| 91蜜桃网址入口| 精品中文字幕一区二区小辣椒| 综合激情成人伊人| 久久综合狠狠综合| 欧美特级限制片免费在线观看| 丰满岳乱妇一区二区三区| 亚洲gay无套男同| 亚洲图片另类小说| 国产欧美久久久精品影院| 51精品视频一区二区三区| 91视频一区二区| 国产一区二区三区黄视频| 亚洲成人免费视| 亚洲精品视频自拍| 国产精品亲子乱子伦xxxx裸| 精品久久久久久综合日本欧美| 欧美性色黄大片| 97久久人人超碰| 国产一区二区91| 久久国产精品色婷婷| 午夜欧美一区二区三区在线播放| 亚洲精品伦理在线| 亚洲欧美国产三级| 国产精品久久久久久亚洲毛片 | 日韩欧美在线影院| 国产精品国产精品国产专区不片| 一区二区三区欧美视频| 久久精品人人做人人爽97| 91精品国产一区二区三区蜜臀| 欧美视频一区在线| 日本道免费精品一区二区三区| av毛片久久久久**hd| 国产精品一二二区| 国产精品影视网| 国产一区二区视频在线| 国产一区二区不卡| 国产精品66部| 国产成a人亚洲| 国产ts人妖一区二区| 国产欧美一区二区在线观看| 五月天亚洲婷婷| 亚洲成人黄色影院| 一区二区免费在线播放| 亚洲精品国产一区二区三区四区在线| 国产精品久久久久影院亚瑟 | 欧美日韩一区三区| 欧美特级限制片免费在线观看| 日本精品视频一区二区三区| 91精彩视频在线| 欧美日韩一区视频| 欧美成人艳星乳罩| 2014亚洲片线观看视频免费| 国产欧美一区二区三区网站| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久精品久久久精品美女| 99精品欧美一区二区三区小说| 色诱视频网站一区| 欧美精品一区二区三区蜜臀| 亚洲日韩欧美一区二区在线| 久久国产夜色精品鲁鲁99| 色视频欧美一区二区三区| 日韩免费观看高清完整版| 一区二区三区资源| 国产剧情一区二区三区| 欧美福利电影网| 一区二区久久久久| 一本色道综合亚洲| 久久精品水蜜桃av综合天堂| 五月天视频一区| 91美女精品福利| 国产亚洲精品超碰| 日韩一区二区三区在线观看| 风流少妇一区二区| 91精品国产欧美日韩| 亚洲另类在线视频| 国产激情精品久久久第一区二区 | 极品美女销魂一区二区三区| 欧美日韩精品二区第二页| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲成人av一区| 色狠狠色噜噜噜综合网| 国产校园另类小说区| 久久精品国产99国产精品| 在线电影院国产精品| 一区2区3区在线看| 色婷婷国产精品久久包臀| 国产精品美女久久久久久久网站| 国产剧情一区二区三区| 久久这里只有精品首页| 麻豆精品视频在线观看视频| 欧美一区二区三区四区视频| 欧美一区欧美二区| 欧美日韩在线播放| 亚洲天堂久久久久久久| 精品在线播放午夜| 欧美区在线观看| 亚洲猫色日本管| 成人av资源网站| 久久久亚洲高清| 奇米四色…亚洲| 欧美久久久久久久久久| 亚洲精品国产精华液| 成人av电影免费观看| 欧美妇女性影城| 亚洲高清久久久| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品嫩草久久久久| 国产91丝袜在线播放九色| 欧美大黄免费观看| 九九久久精品视频| 精品88久久久久88久久久| 久久国内精品视频| 欧美精品一区二区三区四区 | 99精品久久久久久| 国产欧美日韩精品a在线观看| 国产精品一级在线| 亚洲精品日韩一| 92国产精品观看| 一区二区中文视频| 丰满岳乱妇一区二区三区| 亚洲视频在线一区| 色综合色综合色综合色综合色综合| 中文字幕一区在线观看| 91网站在线播放| 亚洲男女一区二区三区| 欧美在线观看视频在线| 性久久久久久久久久久久| 欧美精品久久一区| 麻豆高清免费国产一区| 2020国产精品| 麻豆成人免费电影| 日韩一区中文字幕| 色视频欧美一区二区三区| 亚洲一区二三区| 91精品国产入口| 精品写真视频在线观看| 自拍偷拍亚洲激情| 欧美色男人天堂| 蜜桃精品视频在线| 欧美极品xxx| 欧美丝袜丝nylons| 国产麻豆精品95视频| 亚洲欧美自拍偷拍色图| 在线视频一区二区三| 免费在线看一区| 久久九九久久九九| 91麻豆国产福利精品| 亚洲成人黄色影院| 久久综合久久综合久久| 成人av在线电影| 性做久久久久久免费观看欧美| 久久久亚洲精品一区二区三区| 99国内精品久久| 日本欧美加勒比视频| 国产精品午夜久久| 51精品秘密在线观看| 99re成人在线| 蜜臀av一区二区在线观看| 国产亚洲精品久| 欧美日韩小视频| 麻豆精品在线看| 亚洲一二三级电影| 久久精品日韩一区二区三区| av中文字幕一区| 免费日韩伦理电影| 亚洲色图都市小说| 久久久99精品免费观看不卡| 欧美伊人久久大香线蕉综合69| 久久99热99| 一二三四区精品视频| 欧美精品色一区二区三区| 91一区二区在线观看| 91女人视频在线观看| 日本vs亚洲vs韩国一区三区| 国产精品久久久久久久久果冻传媒| 欧美日韩你懂得| 成+人+亚洲+综合天堂| 秋霞午夜鲁丝一区二区老狼| 国产精品久久久久aaaa| 欧美日韩国产另类一区| 91蝌蚪porny| 国产不卡高清在线观看视频| 奇米777欧美一区二区| 亚洲情趣在线观看| 国产欧美1区2区3区| 欧美一卡二卡在线观看| 91福利在线导航| 成人午夜电影久久影院| 免费成人深夜小野草| 一区二区三区鲁丝不卡| 欧美激情艳妇裸体舞| 精品嫩草影院久久| 91精品在线麻豆| 一本一道久久a久久精品|