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

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

?? macsliderctrl.cpp

?? 通過PC端控制液晶顯示器
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MacSliderCtrl.cpp : implementation file
//
//	CMacSliderCtrl class, version 1.0
//
//	Copyright (c) 1999 Paul M. Meidinger (pmmeidinger@yahoo.com)
//
// 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.
//
//	History:
//		PMM	12/21/1999		Initial implementation.		

#include "stdafx.h"
#include "MacSliderCtrl.h"

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

// Funtion prototypes.
COLORREF LightenColor(const COLORREF crColor, BYTE byIncreaseVal);
COLORREF DarkenColor(const COLORREF crColor, BYTE byReduceVal);

//-------------------------------------------------------------------
//
COLORREF CMacSliderCtrl::LightenColor(const COLORREF crColor, BYTE byIncreaseVal)
//
// Return Value:	None.
//
// Parameters	:	crColor - References a COLORREF structure.
//						byReduceVal - The amount to reduce the RGB values by.
//
// Remarks		:	Lightens a color by increasing the RGB values by the given number.
//
{
	BYTE byRed = GetRValue(crColor);
	BYTE byGreen = GetGValue(crColor);
	BYTE byBlue = GetBValue(crColor);

	if ((byRed + byIncreaseVal) <= 255)
		byRed = BYTE(byRed + byIncreaseVal);
	if ((byGreen + byIncreaseVal)	<= 255)
		byGreen = BYTE(byGreen + byIncreaseVal);
	if ((byBlue + byIncreaseVal) <= 255)
		byBlue = BYTE(byBlue + byIncreaseVal);

	return RGB(byRed, byGreen, byBlue);
}	// LightenColorref

//-------------------------------------------------------------------
//
COLORREF CMacSliderCtrl::DarkenColor(const COLORREF crColor, BYTE byReduceVal)
//
// Return Value:	None.
//
// Parameters	:	crColor - References a COLORREF structure.
//						byReduceVal - The amount to reduce the RGB values by.
//
// Remarks		:	Darkens a color by reducing the RGB values by the given number.
//
{
	BYTE byRed = GetRValue(crColor);
	BYTE byGreen = GetGValue(crColor);
	BYTE byBlue = GetBValue(crColor);

	if (byRed >= byReduceVal)
		byRed = BYTE(byRed - byReduceVal);
	if (byGreen >= byReduceVal)
		byGreen = BYTE(byGreen - byReduceVal);
	if (byBlue >= byReduceVal)
		byBlue = BYTE(byBlue - byReduceVal);

	return RGB(byRed, byGreen, byBlue);
}	// DarkenColorref

/////////////////////////////////////////////////////////////////////////////
// CMacSliderCtrl

//-------------------------------------------------------------------
//
CMacSliderCtrl::CMacSliderCtrl()
//
// Return Value:	None.
//
// Parameters	:	None.
//
// Remarks		:	Standard constructor.
//
{
	m_crThumb = ::GetSysColor(COLOR_3DFACE);
	m_crChannel = ::GetSysColor(COLOR_WINDOW);
	m_crSelection = ::GetSysColor(COLOR_HIGHLIGHT);
	GetColors();
	CreatePens();
}	// CMacSliderCtrl

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


BEGIN_MESSAGE_MAP(CMacSliderCtrl, CSliderCtrl)
	//{{AFX_MSG_MAP(CMacSliderCtrl)
	ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMacSliderCtrl message handlers

//-------------------------------------------------------------------
//
void CMacSliderCtrl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) 
//
// Return Value:	None.
//
// Parameters	:	pNMHDR - Used to get a pointer to a NM_CUSTOMDRAW structure.
//						pResult - Will receive a value which depends on the current
//							drawing stage.
//
// Remarks		:	Sent by the slider control to notify the parent window 
//						about drawing operations. This notification is sent in 
//						the form of a WM_NOTIFY message.
//
{
	LPNMCUSTOMDRAW lpcd = (LPNMCUSTOMDRAW)pNMHDR;

	// CDDS_PREPAINT is at the beginning of the paint cycle. You 
	// implement custom draw by returning the proper value. In this 
	// case, we're requesting item-specific notifications.
	if (lpcd->dwDrawStage == CDDS_PREPAINT)
	{
		// Request prepaint notifications for each item.
		*pResult = CDRF_NOTIFYITEMDRAW;         
		return;
	}

	// Because we returned CDRF_NOTIFYITEMDRAW in response to
	// CDDS_PREPAINT, CDDS_ITEMPREPAINT is sent when the control is
	// about to paint an item.
	if (lpcd->dwDrawStage == CDDS_ITEMPREPAINT)
	{	
		CDC *pDC = CDC::FromHandle(lpcd->hdc);
		CRect rect(lpcd->rc);
		int nSavedDC = pDC->SaveDC();

		if (lpcd->dwItemSpec == TBCD_TICS)
		{
			*pResult = CDRF_DODEFAULT;
			return;
		}	// if drawing tics
		else if (lpcd->dwItemSpec ==  TBCD_THUMB)
		{
			// If the slider has been clicked on (selected) darken
			// the thumb. Save the thumb color, in case it is changed.
			COLORREF crSavedThumb = m_crThumb;

			if (lpcd->uItemState & CDIS_SELECTED)
			{
				m_crThumb = DarkenColor(m_crThumb, 51);
				GetColors();
				CreatePens();
			}

			if (rect.Height() > rect.Width())
				DrawHorizontalThumb(pDC, rect);
			else
				DrawVerticalThumb(pDC, rect);

			// Restore the thumb color.
			if (lpcd->uItemState & CDIS_SELECTED)
			{
				m_crThumb = crSavedThumb;
				GetColors();
				CreatePens();
			}
		}	// if drawing thumb
		else if (lpcd->dwItemSpec == TBCD_CHANNEL)
		{
			// If the slider is disabled, change the thumb
			// to the current face color.
			COLORREF crSavedChannel = m_crChannel;
			if (!IsWindowEnabled())
			{
				m_crChannel = ::GetSysColor(COLOR_3DFACE);
			}

			CRect rcThumb;
			GetThumbRect(rcThumb);
			DrawChannel(pDC, rect, rcThumb.Height() > rcThumb.Width());

			m_crChannel = crSavedChannel;
		}	// if drawing channel

		pDC->RestoreDC(nSavedDC);

		*pResult = CDRF_SKIPDEFAULT;
		return;
	}

	*pResult = 0;
}	// OnCustomDraw

//-------------------------------------------------------------------
//
void CMacSliderCtrl::DrawHorizontalThumb(CDC *pDC, const CRect &rect)
//
// Return Value:	None.
//
// Parameters	:	pDC - Specifies a device context.
//						rect - The rectangle for the thumb.
//
// Remarks		:	Draws a thumb for a horizontal slider control.
//
{
	CRect rc(rect);
	int nWidth = rect.Width();
	int nMid = nWidth >> 1;

	CPen penFrame(PS_SOLID, 1, ::GetSysColor(COLOR_WINDOWFRAME));
	CPen *pOldPen = pDC->SelectObject(&penFrame);	
	CBrush br(m_crThumb);
	CBrush *pOldBrush = pDC->SelectObject(&br);

	DWORD dwStyle = GetStyle();

	// No points on thumb.
	if (dwStyle & TBS_BOTH)
	{
		pDC->RoundRect(rc, CPoint(2, 2));
		rc.DeflateRect(1, 1, 1, 1);
		pDC->Draw3dRect(rc, m_crThumbLight, m_crThumbDark);

		pDC->SetPixel(rc.left, rc.top, m_crThumbLighter);
		pDC->SetPixel(rc.right - 1, rc.top, m_crThumb);
		pDC->SetPixel(rc.right - 1, rc.bottom - 1, m_crThumbDarker);
		pDC->SetPixel(rc.left, rc.bottom - 1, m_crThumb);
	}
	// Point on top.
	else if (dwStyle & TBS_TOP)
	{
		pDC->MoveTo(rc.left, rc.top + nMid - 1);
		pDC->LineTo(rc.left, rc.bottom - 2);
		pDC->LineTo(rc.left + 1, rc.bottom - 1);
		pDC->LineTo(rc.right - 2, rc.bottom - 1);
		pDC->LineTo(rc.right - 1, rc.bottom - 2);
		pDC->LineTo(rc.right - 1, rc.top + nMid - 1);
		pDC->LineTo(rc.right - nMid, rc.top);
		pDC->LineTo(rc.left + nMid - 1, rc.top);
		pDC->LineTo(rc.left, rc.top + nMid - 1);

		pDC->FloodFill(rc.left + nMid, rc.top + nMid, ::GetSysColor(COLOR_WINDOWFRAME));

		if (nWidth > 5)
		{
			pDC->SelectObject(&m_penThumbLight);
			pDC->MoveTo(rc.left + 1, rc.top + nMid);
			pDC->LineTo(rc.left + 1, rc.bottom - 2);
			pDC->MoveTo(rc.right - nMid, rc.top + 1);
			pDC->LineTo(rc.right - nMid - 2, rc.top + 1);

			pDC->SelectObject(&m_penThumbLighter);
			pDC->MoveTo(rc.left + 1, rc.top + nMid - 1);
			pDC->LineTo(rc.left + nMid, rc.top);


			pDC->SelectObject(&m_penThumbDark);
			pDC->MoveTo(rc.left + 2, rc.bottom - 2);
			pDC->LineTo(rc.right - 2, rc.bottom - 2);
			pDC->LineTo(rc.right - 2, rc.bottom - 2);
			pDC->LineTo(rc.right - 2, rc.top + nMid - 1);
			pDC->LineTo(rc.right - nMid, rc.top + 1);
		}

		rc.DeflateRect(1, 2, 1, 0);
	}	// if point at top of thumb
	// Point is on bottom.
	else
	{
		pDC->MoveTo(rc.left, rc.top + 1);
		pDC->LineTo(rc.left, rc.bottom - nMid);
		pDC->LineTo(rc.left + nMid - 1, rc.bottom - 1);
		pDC->LineTo(rc.right - nMid, rc.bottom - 1);
		pDC->LineTo(rc.right - 1, rc.bottom - nMid);
		pDC->LineTo(rc.right - 1, rc.top + 1);
		pDC->LineTo(rc.right - 2, rc.top);
		pDC->LineTo(rc.left, rc.top);

		pDC->FloodFill(rc.left + nMid, rc.top + nMid, ::GetSysColor(COLOR_WINDOWFRAME));

		if (nWidth > 5)
		{
			pDC->SetPixel(rc.left + 1, rc.top + 1, m_crThumbLighter);

			pDC->SelectObject(&m_penThumbLight);
			pDC->MoveTo(rc.left + 1, rc.top + 2);
			pDC->LineTo(rc.left + 1, rc.bottom - nMid + 1);
			pDC->MoveTo(rc.left + 2, rc.top + 1);
			pDC->LineTo(rc.right - 2, rc.top + 1);

			pDC->SelectObject(&m_penThumbDark);
			pDC->MoveTo(rc.left + 2, rc.bottom - nMid + 1);
			pDC->LineTo(rc.left + nMid - 1, rc.bottom - 2);
			pDC->LineTo(rc.right - nMid, rc.bottom - 2);
			pDC->MoveTo(rc.right - 2, rc.bottom - nMid - 1);
			pDC->LineTo(rc.right - 2, rc.top + 1);

			pDC->SelectObject(&m_penThumbDarker);
			pDC->MoveTo(rc.right - nMid, rc.bottom - 2);
			pDC->LineTo(rc.right - 1, rc.bottom - nMid - 1);
		}

		rc.DeflateRect(1, 0, 1, 2);
	}	// if point at bottom of thumb

	// Only draw the gripper if the slider is enabled.
	if (IsWindowEnabled())
	{
		if (nWidth > 5)
		{
			pDC->SelectObject(&m_penThumbLight);
			pDC->MoveTo(rc.left + 1, rc.top + 5);
			pDC->LineTo(rc.left + 1, rc.bottom - 5);
			pDC->MoveTo(rc.left + 3, rc.top + 5);
			pDC->LineTo(rc.left + 3, rc.bottom - 5);
			if (nWidth > 9)
			{
				pDC->MoveTo(rc.left + 5, rc.top + 5);
				pDC->LineTo(rc.left + 5, rc.bottom - 5);
				pDC->MoveTo(rc.left + 7, rc.top + 5);
				pDC->LineTo(rc.left + 7, rc.bottom - 5);
			}
		}

		if (nWidth > 5)
		{
			pDC->SelectObject(&m_penThumbDarker);
			pDC->MoveTo(rc.left + 2, rc.top + 5);
			pDC->LineTo(rc.left + 2, rc.bottom - 4);
			pDC->MoveTo(rc.left + 4, rc.top + 5);
			pDC->LineTo(rc.left + 4, rc.bottom - 4);
			if (nWidth > 9)
			{
				pDC->MoveTo(rc.left + 6, rc.top + 5);
				pDC->LineTo(rc.left + 6, rc.bottom - 4);
			}
		}

		if (nWidth > 5)
		{
			pDC->SetPixel(rc.left + 1, rc.top + 4, m_crThumbLighter);
			pDC->SetPixel(rc.left + 3, rc.top + 4, m_crThumbLighter);
			if (nWidth > 9)
			{
				pDC->SetPixel(rc.left + 5, rc.top + 4, m_crThumbLighter);
				pDC->SetPixel(rc.left + 7, rc.top + 4, m_crThumbLighter);
			}
		}
	}	// if (IsWindowEnabled())

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

//-------------------------------------------------------------------
//
void CMacSliderCtrl::DrawVerticalThumb(CDC *pDC, const CRect &rect)
//
// Return Value:	None.
//
// Parameters	:	pDC - Specifies a device context.
//						rect - The rectangle for the thumb.
//
// Remarks		:	Draws a thumb for a vertical slider control.
//
{
	CRect rc(rect);
	int nHeight = rect.Height();
	int nMid = nHeight >> 1;

	CPen penFrame(PS_SOLID, 1, ::GetSysColor(COLOR_WINDOWFRAME));
	CPen *pOldPen = pDC->SelectObject(&penFrame);	
	CBrush br(m_crThumb);
	CBrush *pOldBrush = pDC->SelectObject(&br);

	DWORD dwStyle = GetStyle();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
洋洋成人永久网站入口| 久久综合色播五月| 一本到高清视频免费精品| 国产精品911| 国产乱妇无码大片在线观看| 狠狠色2019综合网| 国产精品自拍在线| 不卡欧美aaaaa| 91高清在线观看| 在线精品视频小说1| 精品视频一区二区不卡| 欧美日韩中文另类| 91精品国产福利在线观看| 日韩亚洲欧美在线观看| 久久天天做天天爱综合色| 精品国产伦一区二区三区观看体验| 欧美一区二区三区精品| 26uuuu精品一区二区| 中文字幕精品一区二区精品绿巨人 | 国产不卡免费视频| 成人精品鲁一区一区二区| 99久久综合99久久综合网站| 在线免费精品视频| 91麻豆精品国产91久久久| 久久久久九九视频| 亚洲啪啪综合av一区二区三区| 午夜久久久久久久久| 激情文学综合网| 91影视在线播放| 日韩精品专区在线| 亚洲欧洲av一区二区三区久久| 亚洲午夜私人影院| 国产精一区二区三区| 欧美在线一二三| 久久综合av免费| 亚洲一线二线三线视频| 国产在线观看免费一区| 欧美网站大全在线观看| 国产亚洲女人久久久久毛片| 亚洲国产精品久久不卡毛片| 国产一区二区三区四区五区美女| 欧美中文字幕一区| 国产精品无码永久免费888| 无码av免费一区二区三区试看 | 97久久精品人人做人人爽| 欧美美女一区二区在线观看| 国产精品美女久久久久久久久| 日韩专区一卡二卡| av电影一区二区| 久久色在线视频| 日韩成人精品在线观看| 在线观看日产精品| 1区2区3区精品视频| 激情偷乱视频一区二区三区| 在线亚洲免费视频| 国产精品福利影院| 国产黄色精品视频| 久久先锋影音av| 麻豆精品一区二区三区| 欧美日本在线视频| 亚洲欧美国产高清| 成人免费视频app| 国产欧美一区二区三区沐欲| 美脚の诱脚舐め脚责91| 欧美一区二区在线免费观看| 亚洲国产成人精品视频| 在线观看成人免费视频| 一区二区三区色| 成人免费视频网站在线观看| 欧美激情自拍偷拍| 国产精品一区二区果冻传媒| 久久日韩粉嫩一区二区三区 | 99在线热播精品免费| 久久精品亚洲精品国产欧美| 黑人精品欧美一区二区蜜桃| 欧美mv日韩mv国产网站app| 日韩国产一二三区| 91精品国产色综合久久不卡蜜臀 | 成人免费毛片高清视频| 国产婷婷色一区二区三区| 国产福利视频一区二区三区| 久久人人爽爽爽人久久久| 久久精品国产亚洲a| 久久久亚洲高清| 成人午夜视频网站| 有码一区二区三区| 欧美老女人第四色| 狠狠色丁香久久婷婷综合_中| 久久综合色综合88| 成人免费毛片aaaaa**| 亚洲视频狠狠干| 欧美日本国产一区| 韩国精品主播一区二区在线观看 | 激情亚洲综合在线| 一区在线播放视频| 在线观看日韩一区| 精品一区二区免费| 国产精品乱人伦| 欧美日韩精品电影| 国产一区二区精品久久| 国产精品久久久久久久第一福利| 91视频.com| 久久精品av麻豆的观看方式| 亚洲国产成人在线| 欧美绝品在线观看成人午夜影视| 精品一二三四在线| 亚洲精品亚洲人成人网在线播放| 91 com成人网| 成人激情文学综合网| 日韩电影一二三区| 国产欧美一区二区精品久导航| 在线精品视频免费观看| 国内欧美视频一区二区| 亚洲中国最大av网站| 精品剧情在线观看| 91麻豆精品视频| 国产一区二区调教| 亚洲成a天堂v人片| 国产精品久久久久影院色老大| 欧美一区二区三区在| 99国产精品视频免费观看| 精品亚洲国产成人av制服丝袜| 一区二区在线免费| 国产精品理论在线观看| 精品国产乱码久久久久久夜甘婷婷 | 亚洲电影一区二区| 国产精品美女久久久久高潮| 日韩亚洲欧美在线观看| 欧美在线色视频| 99久久综合精品| 粉嫩av一区二区三区| 精品一区二区三区免费| 丝袜国产日韩另类美女| 亚洲视频精选在线| 中文一区二区在线观看| 26uuu国产在线精品一区二区| 欧美精品一二三| 欧美日韩在线电影| 欧洲人成人精品| 91高清视频在线| 在线视频国产一区| 91婷婷韩国欧美一区二区| 国产成人在线网站| 精品一区二区三区香蕉蜜桃 | 在线观看国产精品网站| 成人一级黄色片| 国产成人免费视频精品含羞草妖精| 天天操天天色综合| 亚洲成人激情av| 亚洲精品免费电影| 亚洲精品乱码久久久久久黑人| 中文字幕在线免费不卡| 国产精品久久久久影视| 国产精品国产三级国产a| 欧美国产乱子伦| 国产欧美日韩另类一区| 国产免费观看久久| 国产精品三级av| 亚洲色图清纯唯美| 亚洲人精品午夜| 亚洲v精品v日韩v欧美v专区| 亚洲国产欧美日韩另类综合 | 日韩一本二本av| 欧美mv和日韩mv的网站| 精品99久久久久久| 国产视频911| 日韩毛片视频在线看| 亚洲男女毛片无遮挡| 伊人性伊人情综合网| 午夜精品福利一区二区三区av| 日韩激情视频网站| 久久国产麻豆精品| 成人综合在线视频| 色综合欧美在线视频区| 欧美日韩二区三区| 欧美精品一区二区三区在线播放| 久久久99免费| 中文字幕一区二区三区四区| 亚洲午夜视频在线| 国产在线日韩欧美| 日本道色综合久久| 日韩精品一区二区三区中文不卡| 国产亚洲精品aa| 亚洲第一会所有码转帖| 美女mm1313爽爽久久久蜜臀| 国产69精品久久777的优势| 91官网在线免费观看| 精品少妇一区二区三区日产乱码 | 国产美女在线精品| 欧美在线播放高清精品| 久久亚洲综合色一区二区三区| 国产精品国产三级国产aⅴ入口| 午夜国产精品一区| 成人免费看片app下载| 日韩一区二区三区视频在线观看| 久久久亚洲精品一区二区三区| 一区二区三区丝袜| 成人免费视频免费观看| 日韩三级在线观看| 亚洲综合在线视频|