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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? a16label.cpp

?? 自定義控件
?? CPP
字號:
// A16A16Label.cpp : implementation file
//

#include "stdafx.h"
#include "Resource.h"
#include "A16Label.h"

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

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

///////////////////////////////////////////////////////////////////////////
CA16Label::CA16Label()
{
	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:		CA16Label::~CA16Label
//
// Description:		
//////////////////////////////////////////////////////////////////////////
CA16Label::~CA16Label()
{
	// Clean up
	m_font.DeleteObject();
	::DeleteObject(m_hwndBrush);
	::DeleteObject(m_hBackBrush);
	
}


//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::ReconstructFont
//
// Description:		Helper function to build font after it was changed

//////////////////////////////////////////////////////////////////////////
void CA16Label::ReconstructFont()
{
	m_font.DeleteObject();
	BOOL bCreated = m_font.CreateFontIndirect(&m_lf);

	ASSERT(bCreated);
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::OnPaint
//
// Description:		Handles all the drawing code for the A16Label
//////////////////////////////////////////////////////////////////////////

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


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

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

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


	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();
	}
	

	UINT nMode = pDCMem->SetBkMode(TRANSPARENT);

	// 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);


	DWORD dwFlags = 0;

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

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

	// 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; 
		}
	}


	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:		CA16Label::OnTimer
//
// Description:		Used in conjunction with 'FLASH' functions

//////////////////////////////////////////////////////////////////////////
void CA16Label::OnTimer(UINT nIDEvent) 
{
	m_bState = !m_bState;

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

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::OnSetCursor
//
// Description:		Used in conjunction with 'LINK' function
//////////////////////////////////////////////////////////////////////////
BOOL CA16Label::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	if (m_hCursor)
	{
		::SetCursor(m_hCursor);
		return TRUE;
	}

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

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::OnLButtonDown
//
// Description:		Called when a link is click on
//////////////////////////////////////////////////////////////////////////
void CA16Label::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);
}


//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetText
//
// Description:		Short cut to set window text - caption - A16Label

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetText(const CString& strText)
{
	SetWindowText(strText);
	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetTextColor
//
// Description:		Sets the text color 

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetTextColor(COLORREF crText)
{
	m_crText = crText;
	RedrawWindow();
	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetFontBold
//
// Description:		Sets the font ot bold 

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetFontBold(BOOL bBold)
{	
	m_lf.lfWeight = bBold ? FW_BOLD : FW_NORMAL;
	ReconstructFont();
	RedrawWindow();
	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetFontUnderline
//
// Description:		Sets font underline attribue

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetFontUnderline(BOOL bSet)
{	
	m_lf.lfUnderline = bSet;
	ReconstructFont();
	RedrawWindow();
	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetFontItalic
//
// Description:		Sets font italic attribute

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetFontItalic(BOOL bSet)
{
	m_lf.lfItalic = bSet;
	ReconstructFont();
	RedrawWindow();
	return *this;	
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetSunken
//
// Description:		Sets sunken effect on border

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetSunken(BOOL bSet)
{
	if (!bSet)
		ModifyStyleEx(WS_EX_STATICEDGE,0,SWP_DRAWFRAME);
	else
		ModifyStyleEx(0,WS_EX_STATICEDGE,SWP_DRAWFRAME);
		
	return *this;	
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetBorder

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetBorder(BOOL bSet)
{
	if (!bSet)
		ModifyStyle(WS_BORDER,0,SWP_DRAWFRAME);
	else
		ModifyStyle(0,WS_BORDER,SWP_DRAWFRAME);
		
	return *this;	
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetFontSize
//
// Description:		Sets the font size

//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetFontSize(int nSize)
{
	nSize*=-1;
	m_lf.lfHeight = nSize;
	ReconstructFont();
	RedrawWindow();
	return *this;
}


//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetBkColor
//
// Description:		Sets background color
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetBkColor(COLORREF crBkgnd)
{
	if (m_hBackBrush)
		::DeleteObject(m_hBackBrush);
	
	m_hBackBrush = ::CreateSolidBrush(crBkgnd);

	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetFontName
//
// Description:		Sets the fonts face name
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetFontName(const CString& strFont)
{
	m_lf.lfCharSet = 134/*CHINESEBIG5_CHARSET*/;
	strcpy(m_lf.lfFaceName,strFont);
	ReconstructFont();
	RedrawWindow();
	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::FlashText
//
// Description:		As the function states
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::FlashText(BOOL bActivate)
{
	if (m_bTimer)
		KillTimer(1);

	if (bActivate)
	{
		m_bState = FALSE;
		
		m_bTimer = TRUE;
		
		SetTimer(1,500,NULL);

		m_Type = Text;
	}
	else
		m_Type = None; // Fix

	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::FlashBackground
//
// Description:		As the function states
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::FlashBackground(BOOL bActivate)
{

	if (m_bTimer)
		KillTimer(1);

	if (bActivate)
	{
		m_bState = FALSE;

		m_bTimer = TRUE;
		SetTimer(1,500,NULL);

		m_Type = Background;
	}

	return *this;
}


//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetLink
//
// Description:		Indicates the string is a link
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetLink(BOOL bLink,BOOL bNotifyParent)
{
	m_bLink = bLink;
	m_bNotifyParent = bNotifyParent;

	if (bLink)
		ModifyStyle(0,SS_NOTIFY);
	else
		ModifyStyle(SS_NOTIFY,0);

	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetLinkCursor
//
// Description:		Sets the internet browers link
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetLinkCursor(HCURSOR hCursor)
{
	m_hCursor = hCursor;
	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetTransparent
//
// Description:		Sets the A16Label window to be transpaent
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetTransparent(BOOL bSet)
{
	m_bTransparent = bSet;
	InvalidateRect(NULL,TRUE);
	UpdateWindow();

	return *this;
}

//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetFont3D
//
// Description:		Sets the 3D attribute of the font.
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetFont3D(BOOL bSet,Type3D type)
{
	m_bFont3d = bSet;
	m_3dType = type;
	RedrawWindow();

	return *this;
}

void CA16Label::OnSysColorChange() 
{
//	CStatic::OnSysColorChange();
	if (m_hwndBrush)
		::DeleteObject(m_hwndBrush);

	m_hwndBrush = ::CreateSolidBrush(GetSysColor(COLOR_3DFACE));
	
	RedrawWindow();
		
}



//////////////////////////////////////////////////////////////////////////
//
// Function:		CA16Label::SetRotationAngle
//
// Description:		Sets the 3D attribute of the font.
//////////////////////////////////////////////////////////////////////////
CA16Label& CA16Label::SetRotationAngle(UINT nAngle,BOOL bRotation)
{
	// Arrrrh...
	// Your looking in here why the font is rotating, aren't you?
	// Well try setting the font name to 'Arial' or 'Times New Roman'
	// Make the Angle 180 and set bRotation to true.
	//
	// Font rotation _ONLY_ works with TrueType fonts...
	//
	// 
	m_lf.lfEscapement = m_lf.lfOrientation = (nAngle * 10);
	m_bRotation = bRotation;
	
	ReconstructFont();
	
	RedrawWindow();

	return *this;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99国内精品| 免费在线看一区| 日韩欧美国产小视频| 粉嫩av亚洲一区二区图片| 亚洲风情在线资源站| 中国色在线观看另类| 日韩欧美一卡二卡| 欧美日韩免费视频| 丁香另类激情小说| 捆绑调教一区二区三区| 亚洲成人手机在线| 亚洲视频免费观看| 国产欧美综合在线| 2024国产精品| 日韩午夜在线观看| 7777精品伊人久久久大香线蕉的| 99久久亚洲一区二区三区青草| 精品一区二区三区免费视频| 日韩avvvv在线播放| 亚洲免费av观看| 国产精品成人网| 国产偷国产偷亚洲高清人白洁| 欧美xxxx老人做受| 欧美一区二区三区在线观看| 欧洲一区二区三区在线| 91美女片黄在线观看91美女| 成人午夜视频福利| 国产91露脸合集magnet| 国产一级精品在线| 国产一区二区三区不卡在线观看| 久久精品99久久久| 韩国v欧美v日本v亚洲v| 精品一区二区在线看| 久久精品国产精品青草| 另类小说欧美激情| 美国十次综合导航| 麻豆精品在线播放| 蜜桃视频一区二区三区在线观看| 日韩中文字幕一区二区三区| 亚洲高清中文字幕| 日韩电影免费在线观看网站| 奇米四色…亚洲| 激情综合网天天干| 国产成人午夜99999| 大尺度一区二区| 99re视频精品| 精品视频在线免费观看| 欧美日韩高清不卡| 日韩午夜激情av| 欧美tk丨vk视频| 国产视频一区在线播放| 国产精品久久久久四虎| 亚洲欧美一区二区三区久本道91 | 日韩精品视频网站| 日韩av成人高清| 国产一区二区三区观看| 成人久久视频在线观看| 91搞黄在线观看| 在线综合视频播放| 久久亚洲一级片| 亚洲人午夜精品天堂一二香蕉| 一区二区三区91| 久久99国产精品麻豆| 成人美女视频在线看| 欧美色视频一区| 精品国产青草久久久久福利| 亚洲国产精品ⅴa在线观看| 一区二区三区精品在线观看| 日一区二区三区| 国产精品主播直播| 色菇凉天天综合网| 日韩你懂的在线播放| 国产精品丝袜91| 亚洲国产精品尤物yw在线观看| 精品一区二区三区蜜桃| 99视频在线精品| 91精品婷婷国产综合久久竹菊| 久久理论电影网| 亚洲精品国产一区二区精华液 | 欧美妇女性影城| 精品动漫一区二区三区在线观看| 亚洲国产成人一区二区三区| 午夜视频在线观看一区二区 | 国产精品一区久久久久| 在线精品视频一区二区三四| 久久综合av免费| 一区二区三区日韩在线观看| 国内精品久久久久影院色 | 欧美第一区第二区| 国产精品传媒入口麻豆| 久久精工是国产品牌吗| 色老汉一区二区三区| 久久久久久久久久久久久夜| 亚洲国产一区二区a毛片| 国产成人午夜电影网| 91精品国模一区二区三区| 中文字幕日韩精品一区| 国产在线观看一区二区| 欧美日韩一级二级三级| 国产精品嫩草影院com| 日本亚洲天堂网| 在线观看视频一区二区欧美日韩| 久久久电影一区二区三区| 日韩福利电影在线| 91黄色免费版| 国产精品第五页| 国产suv一区二区三区88区| 91精品国产综合久久婷婷香蕉 | 亚洲色图视频网站| 久久成人精品无人区| 欧美日韩精品一区二区三区蜜桃| 亚洲视频在线一区观看| 国产原创一区二区| 精品欧美一区二区在线观看| 午夜电影一区二区三区| 在线观看不卡一区| 亚洲欧美韩国综合色| 91色porny蝌蚪| 中文字幕综合网| 成人丝袜高跟foot| 欧美激情自拍偷拍| 国产成人午夜精品影院观看视频 | 99这里只有久久精品视频| 久久精品欧美日韩| 国产一区二区三区电影在线观看| 欧美大肚乱孕交hd孕妇| 久久精品理论片| 91精品国产乱码久久蜜臀| 婷婷综合久久一区二区三区| 欧美日韩专区在线| 亚洲1区2区3区4区| 91精品欧美久久久久久动漫| 午夜av一区二区三区| 制服丝袜亚洲精品中文字幕| 青青草国产成人av片免费| 91精品麻豆日日躁夜夜躁| 蜜臀av一级做a爰片久久| 日韩美女视频一区二区在线观看| 美女www一区二区| 精品国产一区二区三区不卡| 国产永久精品大片wwwapp| 久久久国产午夜精品| 成人免费视频免费观看| 亚洲视频一区二区免费在线观看| 91女人视频在线观看| 亚洲一区在线观看网站| 欧美日韩国产另类一区| 免费观看久久久4p| 久久免费精品国产久精品久久久久| 高清成人免费视频| 亚洲天堂精品在线观看| 欧美性淫爽ww久久久久无| 偷拍与自拍一区| 久久综合999| 一本色道亚洲精品aⅴ| 亚洲成a天堂v人片| 精品对白一区国产伦| 成人av第一页| 午夜激情综合网| 久久麻豆一区二区| 色婷婷激情综合| 麻豆91在线观看| 日本一区二区综合亚洲| 91同城在线观看| 免费三级欧美电影| 国产精品高潮久久久久无| 91精品福利在线| 久久精品久久精品| 亚洲精品视频一区| 91精品国产品国语在线不卡| 国产91精品免费| 亚洲成av人片在线观看| 精品国产91久久久久久久妲己| 成人精品视频.| 五月婷婷综合网| 中文字幕精品一区| 欧美日本一道本| 成人激情视频网站| 日韩激情视频网站| 国产精品嫩草影院av蜜臀| 3751色影院一区二区三区| 成a人片国产精品| 奇米888四色在线精品| 亚洲丝袜精品丝袜在线| 欧美v国产在线一区二区三区| 色系网站成人免费| 国产真实精品久久二三区| 亚洲综合一区在线| 国产日韩综合av| 欧美精品在线一区二区| 成人高清av在线| 美腿丝袜亚洲色图| 亚洲国产成人va在线观看天堂| 久久久国产精品不卡| 欧美一区二区人人喊爽| 色综合视频一区二区三区高清| 国内精品久久久久影院薰衣草 | 亚洲成av人片一区二区梦乃| 国产精品剧情在线亚洲| 精品国产免费视频|