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

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

?? macbuttons.cpp

?? 這是我仿照串口助手(龔建偉)作的一個例子并修正了其中的一些bug
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/////////////////////////////////////////////////////////////////////////////
//
// MacButtons.cpp : implementation file
//
// Feel free to modifiy and/or distribute this file, but
// do not remove this header.
//
// I would appreciate a notification of any bugs discovered or 
// improvements that could be made.
//
// This file is provided "as is" with no expressed or implied warranty.
//
/////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MacButtons.h"

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


/////////////////////////////////////////////////////////////////////////////
//
//	CMacButton class, version 2.0
//
//	Copyright (c) 1999 Paul Meidinger (pmmeidinger@yahoo.com)
//
//	History:
//		PMM	12/13/1999		Initial implementation.		
//
//		PMM	12/29/1999		Minor changes made.
//
/////////////////////////////////////////////////////////////////////////////

//-------------------------------------------------------------------
//
CMacButton::CMacButton()
//
// Return Value:	None.
//
// Parameters	:	None.
//
// Remarks		:	Standard constructor.
//
{
	m_nType = TYPE_STANDARD;

	m_nCheck = 0;
	m_bMouseDown = FALSE;

	m_bBold = FALSE;

	m_hIcon = NULL;
	m_hBitmap = NULL;
	m_sizeImage = CSize(0, 0);

	m_nImageEffect = 0;

	GetColors();
	CreatePens();
}	// CMacButton

//-------------------------------------------------------------------
//
CMacButton::~CMacButton()
//
// Return Value:	None.
//
// Parameters	:	None.
//
// Remarks		:	Destructor.
//
{
	DeletePens();
}	// ~CMacButton


BEGIN_MESSAGE_MAP(CMacButton, CButton)
	//{{AFX_MSG_MAP(CMacButton)
	ON_WM_SYSCOLORCHANGE()
	ON_WM_LBUTTONDBLCLK()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMacButton message handlers

//-------------------------------------------------------------------
//
void CMacButton::PreSubclassWindow() 
//
// Return Value:	None.
//
// Parameters	:	None.
//
// Remarks		:	This member function is called by the framework to 
//						allow other necessary subclassing to occur before the 
//						window is subclassed. Adds the BS_OWNERDRAW style.
//
{
	CButton::PreSubclassWindow();
	ModifyStyle(0, BS_OWNERDRAW);
}	// PreSubclassWindow

//-------------------------------------------------------------------
//
void CMacButton::DrawItem(LPDRAWITEMSTRUCT lpDIS) 
//
// Return Value:	None.
//
// Parameters	:	lpDIS - A long pointer to a DRAWITEMSTRUCT structure.
//
// Remarks		:	Called by the framework when a visual aspect of an 
//						owner-drawn button has changed.
//
{
	DrawButton(lpDIS);
}	// DrawItem

//-------------------------------------------------------------------
//
void CMacButton::DrawButton(LPDRAWITEMSTRUCT lpDIS)
//
// Return Value:	None.
//
// Parameters	:	lpDIS - A long pointer to a DRAWITEMSTRUCT structure.
//
// Remarks		:	Draws a Mac button.
//
{
	CDC* pDC = CDC::FromHandle(lpDIS->hDC);
	CRect rectItem(lpDIS->rcItem);

	UINT nState = lpDIS->itemState;
	UINT nStyle = GetStyle();
	BOOL bPushLike = BOOL(nStyle & BS_PUSHLIKE);

	// Create a mem DC for drawing
	CDC dcMem;
	dcMem.CreateCompatibleDC(pDC);
	CBitmap bmp;
	bmp.CreateCompatibleBitmap(pDC, rectItem.Width(), rectItem.Height());
	CBitmap *pOldBmp = dcMem.SelectObject(&bmp);

	int nSaveDC = dcMem.SaveDC();

	CBrush *pOldBrush = (CBrush *)dcMem.SelectStockObject(NULL_BRUSH);
	dcMem.FillSolidRect(rectItem, m_crFace);

	// If the button is standard or pushlike, draw it now.
	// Wait until after drawing the text/image and focus to draw
	//	the radio button or check box. This way, the text or image
	// will not cover the radio or check.
	if (m_nType == TYPE_STANDARD)
		DrawStandardButton(&dcMem, rectItem, nStyle, nState);
	else if (bPushLike)
		DrawPushLikeButton(&dcMem, rectItem, nStyle, nState);

	CRect rectText(rectItem);
	CRect rectImage(rectItem);
	CString sText;
	GetWindowText(sText);

	// Draw an image or the text.
	if (m_hIcon || m_hBitmap)
		DrawImage(&dcMem, rectImage, nStyle, nState);
	else
		DrawButtonText(&dcMem, rectText, sText, nStyle, nState);

	// Draw the focus rect.
	if (nState & ODS_FOCUS)
	{
		if ((m_nType == TYPE_STANDARD) || bPushLike)
		{
			rectText = lpDIS->rcItem;
			rectText.DeflateRect(4, 4, 4, 4);
			dcMem.DrawFocusRect(rectText);
		}
		else if (m_hIcon || m_hBitmap)
		{
			rectImage.InflateRect(1, 1, 1, 1);
			if (rectImage.top < rectItem.top)
				rectImage.top = rectItem.top;
			if (rectImage.bottom > rectItem.bottom)
				rectImage.bottom = rectItem.bottom;
			if (rectImage.left < rectItem.left)
				rectImage.left = rectItem.left;
			if (rectImage.right > rectItem.right)
				rectImage.right = rectItem.right;

			dcMem.DrawFocusRect(rectImage);
		}
		else
		{
			rectText.InflateRect(1, 1, 1, 2);
			if (rectText.top < rectItem.top)
				rectText.top = rectItem.top;
			if (rectText.bottom > rectItem.bottom)
				rectText.bottom = rectItem.bottom;
			if (rectText.left < rectItem.left)
				rectText.left = rectItem.left;
			if (rectText.right > rectItem.right)
				rectText.right = rectItem.right;

			dcMem.DrawFocusRect(rectText); 
		}
	}	// if the button has focus

	// Draw the check box or radio button now.
	if (!bPushLike)
	{
		// Determine the rect for the check mark.
		CRect rectCheck = GetCheckRect(rectItem, nStyle);

		if (m_nType == TYPE_CHECKBOX)
			DrawCheckBox(&dcMem, rectCheck, nStyle, nState);
		else if (m_nType == TYPE_RADIO)
			DrawRadioButton(&dcMem, rectCheck, nStyle, nState);
	}

	pDC->BitBlt(rectItem.left, rectItem.top, rectItem.Width(), rectItem.Height(), &dcMem, rectItem.left, rectItem.top, SRCCOPY);

	// Clean up.
	dcMem.SelectObject(pOldBrush);
	dcMem.SelectObject(pOldBmp);
	dcMem.RestoreDC(nSaveDC);
	dcMem.DeleteDC();
	bmp.DeleteObject();
}	// DrawButton

//-------------------------------------------------------------------
//
void CMacButton::DrawStandardButton(CDC *pDC, const CRect &rect, UINT nStyle, UINT nState)
//
// Return Value:	None.
//
// Parameters	:	pDC - A pointer to the DC to draw on.
//						rect - The button rectangle.
//						nStyle - The button's style.
//						nState - The button's state.
//
// Remarks		:	Draws the button.
//
{
	// Draw a flat button.
	if (nStyle & BS_FLAT)
	{
		COLORREF crFill = ::GetSysColor(COLOR_WINDOW);
		CBrush brFill(nState & ODS_SELECTED ? ~crFill : crFill);
		CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brFill);
		CPen pen;
		if (nState & ODS_DISABLED)
			pen.CreatePen(PS_SOLID, 1, m_crShadow);
		else if (m_nCheck || m_bMouseDown)
			pen.CreatePen(PS_SOLID, 1, crFill);
		else
			pen.CreatePen(PS_SOLID, 1, ~crFill);
		CPen *pOldPen = (CPen *)pDC->SelectObject(&pen);
		pDC->RoundRect(rect, CPoint(6, 6));
		pDC->SelectObject(pOldBrush);
		pDC->SelectObject(pOldPen);
		pen.DeleteObject();
		return;
	}	// if flat
	
	CBrush brFill(nState & ODS_SELECTED ? m_crLiteShadow : m_crFace);
	CBrush *pOldBrush	= (CBrush *)pDC->SelectObject(&brFill);
	CPen penFrame(PS_SOLID, 1, ::GetSysColor(COLOR_WINDOWFRAME));
	CPen *pOldPen = (CPen *)pDC->SelectObject(nState & ODS_DISABLED ? &m_penShadow : &penFrame);

	// Draw a 3D button.
	if (nState & ODS_DISABLED)
		pDC->RoundRect(rect, CPoint(6, 6));
	else if (nState & ODS_SELECTED)
		DrawPressedPushButton(pDC, rect);
	else
		DrawUnpressedPushButton(pDC, rect);

	pDC->SelectObject(pOldBrush);
	pDC->SelectObject(pOldPen);
}	// DrawStandardButton

//-------------------------------------------------------------------
//
void CMacButton::DrawCheckBox(CDC *pDC, CRect rect, UINT nStyle, UINT nState)
//
// Return Value:	None.
//
// Parameters	:	pDC - A pointer to the DC to draw on.
//						rect - The check mark's rectangle.
//						nStyle - The button's style.
//						nState - The button's state.
//
// Remarks		:	Draws the check mark.
//
{
	BOOL bDisabled = nState & ODS_DISABLED;
	
	// Deflate the rect by two on the right (for the check mark's shadow).
	rect.DeflateRect(0, 0, 2, 0);

	CPen *pOldPen = pDC->GetCurrentPen();
	CBrush *pOldBrush = pDC->GetCurrentBrush();

	// Draw a flat checkbox.
	if (nStyle & BS_FLAT)
	{
		COLORREF crFrame = ::GetSysColor(COLOR_WINDOW);
		CPen penFrame(PS_SOLID, 1, ::GetSysColor(COLOR_WINDOWFRAME));
		CBrush brFill(crFrame);
		pDC->SelectObject(&penFrame);
		pDC->SelectObject(&brFill);

		pDC->Rectangle(rect);

		if (bDisabled)
		{
			for (int i = rect.left + 1, j = rect.top + 1; i < rect.right; i += 2, j += 2)
			{
				pDC->SetPixel(i, rect.top, crFrame);
				pDC->SetPixel(i - 1, rect.bottom - 1, crFrame);
				pDC->SetPixel(rect.left, j, crFrame);
				pDC->SetPixel(rect.right - 1, j - 1, crFrame);
			}
		}

		rect.DeflateRect(1, 1, 1, 1);

		if (m_bMouseDown)
			pDC->Rectangle(rect);

		// Inflate the rect by two on the right (for the check mark's shadow).
		rect.InflateRect(0, 0, 2, 0);

		int nLeft = rect.left;
		int nTop = rect.top;

		CPen penDkShadow(PS_SOLID, 1, m_crDkShadow);
		pDC->SelectObject(&penDkShadow);

		// Draw the check, cross, or tri-state mark.
		if (m_nCheck == 1)
		{
			if (m_nCheckStyle == CHECK_STYLE_CHECK)
			{
				if (!bDisabled)
				{
					pDC->MoveTo(nLeft + 1, nTop + 4);
					pDC->LineTo(nLeft + 4, nTop + 7);
					pDC->LineTo(nLeft + 12,nTop - 1);
				}
				pDC->MoveTo(nLeft + 2, nTop + 4);
				pDC->LineTo(nLeft + 4, nTop + 6);
				pDC->LineTo(nLeft + 11, nTop -1);
			}
			else if (m_nCheckStyle == CHECK_STYLE_CROSS)
			{
				pDC->MoveTo(nLeft, nTop);
				pDC->LineTo(nLeft + 10, nTop + 10);

				int nAdjust = bDisabled ? 1 : 0;
				pDC->MoveTo(nLeft + nAdjust, nTop + 9 - nAdjust);
				pDC->LineTo(nLeft + 10 - nAdjust, nTop - 1 + nAdjust);
			}
		}
		else if (m_nCheck == 2)
		{
			pDC->SelectObject(&m_penDkShadow);
			pDC->MoveTo(nLeft + 2, nTop + 4);
			pDC->LineTo(nLeft + 8, nTop + 4);
			pDC->MoveTo(nLeft + 2, nTop + 5);
			pDC->LineTo(nLeft + 8, nTop + 5);
		}

	}	// if flat
	// Else draw a 3D checkbox.
	else
	{
		CBrush brFrame(bDisabled ? m_crShadow : ::GetSysColor(COLOR_WINDOWFRAME));
		pDC->FrameRect(rect, &brFrame);
		rect.DeflateRect(1, 1);

		if (m_bMouseDown)
		{								
			CBrush brShadow(m_crLiteShadow);
			pDC->FillRect(rect, &brShadow);
			pDC->Draw3dRect(rect, m_crShadow, m_crLiteFace);
		}
		else
		{
			pDC->FillSolidRect(rect, m_crFace);

			if (!bDisabled)
				pDC->Draw3dRect(rect, m_crHilight, m_crShadow);
		}

		pDC->SetPixel(CPoint(rect.right - 1, rect.top), m_crFace);
		pDC->SetPixel(CPoint(rect.left, rect.bottom - 1), m_crFace);

		// Inflate the rect by two on the right (for the check mark's shadow).
		rect.InflateRect(0, 0, 2, 0);

		int nLeft = rect.left;
		int nTop = rect.top;

		// Draw the check, cross, or tri-state mark.
		if (m_nCheck == 1)
		{
			// Draw the check mark's shadow
			if (m_nCheckStyle == CHECK_STYLE_CHECK)
			{
				// Draw the check mark's shadow
				pDC->SelectObject(bDisabled ? &m_penLiteShadow : &m_penShadow);
				pDC->MoveTo(nLeft + 4, nTop + 8);
				pDC->LineTo(nLeft + 9, nTop + 3);
				pDC->LineTo(nLeft + 9, nTop + 5);

				pDC->SelectObject(&m_penLiteShadow);
				pDC->MoveTo(nLeft + 2, nTop + 6);
				pDC->LineTo(nLeft + 4, nTop + 8);
				pDC->MoveTo(nLeft + 5, nTop + 8);
				pDC->LineTo(nLeft + 9, nTop + 4);

				pDC->SetPixel(nLeft + 11, nTop + 1, bDisabled ? m_crLiteShadow : m_crShadow);
				pDC->SetPixel(nLeft + 12, nTop + 1, m_crLiteShadow);
				pDC->SetPixel(nLeft + 11, nTop + 2, m_crLiteShadow);

				// Draw the check mark.
				pDC->SelectObject(bDisabled ? &m_penShadow : &m_penDkShadow);
				pDC->MoveTo(nLeft + 1, nTop + 4);
				pDC->LineTo(nLeft + 4, nTop + 7);
				pDC->LineTo(nLeft + 12,nTop - 1);
				pDC->MoveTo(nLeft + 2, nTop + 4);
				pDC->LineTo(nLeft + 4, nTop + 6);
				pDC->LineTo(nLeft + 11, nTop -1);
			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色妞www精品视频| 五月婷婷欧美视频| 亚洲精品乱码久久久久久日本蜜臀| 亚洲欧洲一区二区在线播放| 亚洲一区日韩精品中文字幕| 日韩中文字幕91| 国产成人免费视频| 欧美性大战久久久久久久蜜臀| 日韩一区二区三区三四区视频在线观看 | 在线视频观看一区| 日韩一级大片在线观看| 国产精品欧美极品| 亚洲电影第三页| 丰满岳乱妇一区二区三区| 欧美在线短视频| 国产网站一区二区三区| 亚洲午夜av在线| 国产美女在线精品| 欧美系列在线观看| 亚洲国产精品高清| 日本成人中文字幕在线视频| 成人免费视频一区二区| 91麻豆精品91久久久久同性| 国产精品女同互慰在线看| 日韩制服丝袜av| av一二三不卡影片| 欧美成人精品3d动漫h| 一区二区在线观看视频| 国产麻豆成人精品| 欧美久久一二区| 中文字幕在线一区二区三区| 秋霞成人午夜伦在线观看| 91精品1区2区| 欧美国产精品一区二区三区| 蜜乳av一区二区三区| 欧美三级韩国三级日本三斤| 国产精品婷婷午夜在线观看| 精品一区二区三区免费播放| 欧美日韩在线直播| 中文字幕亚洲在| 极品瑜伽女神91| 欧美一区二区二区| 亚洲图片有声小说| 99久久免费精品高清特色大片| 欧美变态tickle挠乳网站| 亚洲成精国产精品女| 91碰在线视频| 亚洲国产激情av| 国内成人精品2018免费看| 欧美精品tushy高清| 亚洲综合偷拍欧美一区色| 99精品久久99久久久久| 国产精品美女久久福利网站| 国产麻豆一精品一av一免费| 日韩欧美在线综合网| 性做久久久久久久久| 色婷婷综合久色| 最好看的中文字幕久久| 国产成人h网站| 国产亚洲欧美色| 精品一区二区三区不卡 | 美女网站视频久久| 这里只有精品免费| 亚洲国产一区二区三区青草影视| 97久久久精品综合88久久| 亚洲欧洲国产日韩| 色综合久久综合| 亚洲日穴在线视频| 91丨九色丨国产丨porny| 中文字幕视频一区二区三区久| 丁香六月综合激情| 欧美国产欧美亚州国产日韩mv天天看完整| 国产乱一区二区| 久久亚洲一区二区三区四区| 国产在线精品一区二区不卡了 | 激情久久五月天| 26uuu亚洲综合色| 狠狠狠色丁香婷婷综合久久五月| 久久综合视频网| 国产精品夜夜爽| 国产精品天美传媒| 91麻豆国产福利精品| 一区二区三区日本| 欧美人动与zoxxxx乱| 日本欧美一区二区三区| 精品美女在线播放| 国产成人午夜99999| 最新成人av在线| 在线观看不卡一区| 日韩精品91亚洲二区在线观看 | 久久99国产精品尤物| 久久综合资源网| 成人午夜精品在线| 亚洲美女屁股眼交3| 欧美日韩三级在线| 久久se这里有精品| 国产精品嫩草99a| 91成人在线观看喷潮| 视频一区中文字幕国产| 精品国一区二区三区| 国产精品亚洲а∨天堂免在线| 国产精品国产a级| 欧美午夜精品久久久久久孕妇| 日韩电影一二三区| 国产亚洲欧美日韩在线一区| a4yy欧美一区二区三区| 亚洲成av人片在www色猫咪| 精品国产一区二区三区久久久蜜月| 国产精品资源站在线| 一区二区在线观看视频在线观看| 欧美疯狂做受xxxx富婆| 国产一区二区三区免费播放| 亚洲日本va在线观看| 91麻豆精品国产91久久久更新时间 | 色婷婷综合激情| 免费一区二区视频| 欧美高清在线视频| 欧美高清视频一二三区 | 久久精品视频一区二区| 91在线看国产| 久久精品国产久精国产| 日韩毛片高清在线播放| 日韩午夜激情av| 色老综合老女人久久久| 精品一区二区三区的国产在线播放| 亚洲欧美另类小说| 欧美大胆人体bbbb| 日本国产一区二区| 国产尤物一区二区| 一个色在线综合| 国产三级一区二区| 欧美久久一二三四区| jizzjizzjizz欧美| 黄色精品一二区| 亚洲国产欧美日韩另类综合| 国产日韩在线不卡| 欧美高清视频在线高清观看mv色露露十八 | 欧美在线一区二区| 粉嫩aⅴ一区二区三区四区| 日本午夜一本久久久综合| 综合激情网...| 精品电影一区二区三区| 欧美日韩在线免费视频| www.激情成人| 国产麻豆视频一区二区| 日本不卡的三区四区五区| 亚洲精品中文字幕乱码三区| 国产视频一区二区在线观看| 91麻豆精品国产综合久久久久久| 99久久精品国产一区二区三区| 精品一区二区日韩| 日本va欧美va精品发布| 亚洲国产精品久久人人爱蜜臀| 国产精品美女久久久久久久久久久| 精品国产一区二区三区久久久蜜月 | 亚洲欧洲日产国产综合网| 久久影院视频免费| 欧美一区二区黄| 欧美精选午夜久久久乱码6080| 色综合久久天天| 99精品视频免费在线观看| 国产成人自拍高清视频在线免费播放| 日韩精品1区2区3区| 亚洲一级二级三级| 亚洲欧美日韩国产中文在线| 欧美激情在线看| 久久久久久久久免费| 欧美xxxxx牲另类人与| 91精品国产综合久久香蕉麻豆| 在线观看亚洲成人| 一本到三区不卡视频| 91在线精品一区二区三区| 成人av片在线观看| 99久久免费国产| 91香蕉国产在线观看软件| 91亚洲永久精品| 色综合激情五月| 色综合久久88色综合天天免费| 99久久99久久精品免费观看| a亚洲天堂av| 色综合天天综合给合国产| 91在线观看免费视频| 色系网站成人免费| 欧美午夜影院一区| 欧美日韩国产高清一区二区| 欧美三级在线播放| 91麻豆精品久久久久蜜臀 | 国产一区二区三区在线观看免费视频| 美脚の诱脚舐め脚责91| 精品在线免费观看| 国产一区二三区| 福利电影一区二区| www.66久久| 一本高清dvd不卡在线观看| 欧美日韩中字一区| 日韩三级视频中文字幕| 精品美女被调教视频大全网站| 久久综合给合久久狠狠狠97色69| 国产亚洲成av人在线观看导航| 欧美国产视频在线|