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

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

?? roundbutton2.cpp

?? c 按鈕操作
?? CPP
字號:
/********************************************************************
	created:	2005/06/03
	created:	3:6:2005   13:22
	filename: 	x:\Software\Mfc\Source\Controls\Buttons\RoundButton2.cpp
	file path:	x:\Software\Mfc\Source\Controls\Buttons
	file base:	RoundButton2
	file ext:	cpp
	author:		Markus Zocholl
	
	purpose:	CRoundButton2 defines a universal Button-Control with the 
				following features:

				* Shape is a rounded Rectangle
				* Button includes Border and Button-Face
				* Many parameters to get an individual look
				* Functions of Button to be en- or disabled:
					- Button (disabled means a static control with userdefined styles)
					- Hover
*********************************************************************/

#include "StdAfx.h"
#include <math.h>
#include ".\RoundButton2.h"

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

/************************************************************************/
/* Construction and Destruction                                         */
/************************************************************************/

//! Construction
CRoundButton2::CRoundButton2(void):	
	  m_bDefaultButton(false)
	, m_bIsCheckButton(false)
	, m_bIsRadioButton(false)
	, m_bIsHotButton(false)
	, m_bMouseOnButton(false)
	, m_bIsChecked(false)	
	, m_ptRoundButtonStyle(NULL)
	, m_rBtnSize(CRect(0, 0, 0, 0))
	, m_bRedraw(false)
	, m_sOldCaption(_T(""))
	  {
	// Set Standards in Font-Style
	m_tLogFont.lfHeight			= 16;
	m_tLogFont.lfWidth			= 0;
	m_tLogFont.lfEscapement		= 0;
	m_tLogFont.lfOrientation	= 0;
	m_tLogFont.lfWeight			= FW_BOLD;
	m_tLogFont.lfItalic			= false;
	m_tLogFont.lfUnderline		= false;
	m_tLogFont.lfStrikeOut		= false;
	m_tLogFont.lfCharSet		= DEFAULT_CHARSET;
	m_tLogFont.lfOutPrecision	= OUT_DEFAULT_PRECIS;
	m_tLogFont.lfClipPrecision	= CLIP_DEFAULT_PRECIS;
	m_tLogFont.lfQuality		= ANTIALIASED_QUALITY;
	m_tLogFont.lfPitchAndFamily	= DEFAULT_PITCH;
	strcpy(m_tLogFont.lfFaceName, "Tahoma");

	m_tBtnFont.CreateFontIndirect(&m_tLogFont);

	// Set Standard Font-Color
	m_tTextColor.m_tDisabled	= RGB(64, 64, 64);
	m_tTextColor.m_tEnabled		= RGB( 0,  0,  0);
	m_tTextColor.m_tClicked		= RGB( 0,  0,  0);
	m_tTextColor.m_tPressed		= RGB( 0,  0,  0);
	m_tTextColor.m_tHot			= RGB( 0,  0,  0);
}

//! Destruction
CRoundButton2::~CRoundButton2(void)
{
}

/************************************************************************/
/* public Functions                                                     */
/************************************************************************/

// Set Style of Button
bool CRoundButton2::SetRoundButtonStyle(CRoundButtonStyle* _ptRoundButtonStyle)
{
	// Check, if Button-Style is given
	if (_ptRoundButtonStyle == NULL)
		return false;

	// Set Pointer to ButtonStyle
	m_ptRoundButtonStyle = _ptRoundButtonStyle;

	// Redraw Button
	m_bRedraw = true;

	// All Done
	return false;
}

// Set Font of Button
bool CRoundButton2::SetFont(LOGFONT* _ptLogFont)
{
	if (_ptLogFont == NULL)
		return false;

	// Delete Font, if already given
	if (m_tBtnFont.m_hObject != NULL)
		m_tBtnFont.DeleteObject();

	// Store Infos local
	memcpy(&m_tLogFont, _ptLogFont, sizeof(LOGFONT));

	// Create new Font
	m_tBtnFont.CreateFontIndirect(&m_tLogFont);

	// Button should be redrawn
	m_bRedraw = true;

	return true;
}

// Set Font of Button
bool CRoundButton2::GetFont(LOGFONT* _ptLogFont)
{
	if (_ptLogFont == NULL)
		return false;

	// Store Infos local
	memcpy(_ptLogFont, &m_tLogFont, sizeof(LOGFONT));

	return true;
}

//! Set Color of Caption
bool CRoundButton2::SetTextColor(tColorScheme* _ptTextColor)
{
	if (_ptTextColor == NULL)
		return false;

	// Store Infos locally
	memcpy(&m_tTextColor, _ptTextColor, sizeof(tColorScheme));

	// Button should be redrawn
	m_bRedraw = true;

	return true;
}

//! Get Color of Caption
bool CRoundButton2::GetTextColor(tColorScheme* _ptTextColor)
{
	if (_ptTextColor == NULL)
		return false;

	// Store Infos locally
	memcpy(_ptTextColor, &m_tTextColor, sizeof(tColorScheme));

	return true;
}

/************************************************************************/
/* Own Drawing-Functions                                                */
/************************************************************************/

//! Generate Bitmaps to hold Buttons
void CRoundButton2::GenButtonBMPs(CDC* _pDC, CRect _rRect)
{
	if (m_tBmpBtn.m_hObject != NULL)
		m_tBmpBtn.DeleteObject();
	m_tBmpBtn.m_hObject = NULL;
	// Generate Bitmap
	if (m_tBmpBtn.CreateCompatibleBitmap(_pDC, _rRect.Width(), _rRect.Height() * BS_LAST_STATE) == FALSE)
	{
		m_rBtnSize = CRect(0, 0, 0, 0);
	}
	else
	{
		m_rBtnSize = _rRect;
	}
}

//! Draw Button-Face
void CRoundButton2::DrawButtonFace(CDC* _pDC)
{
	// We need an attached style
	if (m_ptRoundButtonStyle == NULL)
		return;

	// Get Pointer to Bitmap of Masks
	CBitmap* pButtonMasks = m_ptRoundButtonStyle->GetButtonEdge(_pDC);

	// Create Memory-DC
	CDC SourceDC;
	SourceDC.CreateCompatibleDC(_pDC);

	// Select Working Objects into DCs
	HGDIOBJ hOldBmp1 = SourceDC.SelectObject(pButtonMasks);

	int nState;

	CSize tEdgeSize = m_ptRoundButtonStyle->GetEdgeSize();
	CSize tCorrectedEdgeSize;
	CSize tMaskSize = m_ptRoundButtonStyle->GetMaskSize();

	// Correct Edge-Size for smaller Buttons
	tCorrectedEdgeSize.cx = __min(tEdgeSize.cx, __min(m_rBtnSize.Width() / 2, m_rBtnSize.Height() / 2));
	tCorrectedEdgeSize.cy = tCorrectedEdgeSize.cx;

	for (nState = 0; nState < BS_LAST_STATE; nState++)
	{
		/************************************************************************/
		/* Draw Edges                                                           */
		/************************************************************************/
		// Left-Top
		_pDC->StretchBlt(
			0, 
			nState * m_rBtnSize.Height(), 
			tCorrectedEdgeSize.cx, 
			tCorrectedEdgeSize.cy, 
			&SourceDC, 
			0, 
			nState * tMaskSize.cy,
			tEdgeSize.cx,
			tEdgeSize.cy,
			SRCCOPY);
		// Left-Bottom
		_pDC->StretchBlt(
			0, 
			nState * m_rBtnSize.Height() + m_rBtnSize.Height() - tCorrectedEdgeSize.cy, 
			tCorrectedEdgeSize.cx, 
			tCorrectedEdgeSize.cy, 
			&SourceDC, 
			0, 
			nState * tMaskSize.cy + tMaskSize.cy - tEdgeSize.cy, 
			tEdgeSize.cx,
			tEdgeSize.cy,
			SRCCOPY);
		// Right-Top
		_pDC->StretchBlt(
			m_rBtnSize.Width() - tCorrectedEdgeSize.cx, 
			nState * m_rBtnSize.Height(), 
			tCorrectedEdgeSize.cx, 
			tCorrectedEdgeSize.cy, 
			&SourceDC, 
			tMaskSize.cx - tEdgeSize.cx, 
			nState * tMaskSize.cy, 
			tEdgeSize.cx,
			tEdgeSize.cy,
			SRCCOPY);
		// Right-Bottom
		_pDC->StretchBlt(
			m_rBtnSize.Width() - tCorrectedEdgeSize.cx, 
			nState * m_rBtnSize.Height() + m_rBtnSize.Height() - tCorrectedEdgeSize.cy, 
			tCorrectedEdgeSize.cx, 
			tCorrectedEdgeSize.cy, 
			&SourceDC, 
			tMaskSize.cx - tEdgeSize.cx, 
			nState * tMaskSize.cy + tMaskSize.cy - tEdgeSize.cy, 
			tEdgeSize.cx,
			tEdgeSize.cy,
			SRCCOPY);
		/************************************************************************/
		/* Draw Sides                                                           */
		/************************************************************************/
		// Top
		_pDC->StretchBlt(
			tCorrectedEdgeSize.cx, 
			nState * m_rBtnSize.Height(),
			m_rBtnSize.Width() - 2 * tCorrectedEdgeSize.cx,
			tCorrectedEdgeSize.cy,
			&SourceDC,
			tEdgeSize.cx,
			nState * tMaskSize.cy,
			1,
			tEdgeSize.cy,
			SRCCOPY);
		// Bottom
		_pDC->StretchBlt(
			tCorrectedEdgeSize.cx, 
			nState * m_rBtnSize.Height() + m_rBtnSize.Height() - tCorrectedEdgeSize.cy,
			m_rBtnSize.Width() - 2 * tCorrectedEdgeSize.cx,
			tCorrectedEdgeSize.cy,
			&SourceDC,
			tEdgeSize.cx,
			nState * tMaskSize.cy + tMaskSize.cy - tEdgeSize.cy,
			1,
			tEdgeSize.cy,
			SRCCOPY);
		// Left
		_pDC->StretchBlt(
			0, 
			nState * m_rBtnSize.Height() + tCorrectedEdgeSize.cy,
			tCorrectedEdgeSize.cx,
			m_rBtnSize.Height() - 2 * tCorrectedEdgeSize.cy,
			&SourceDC,
			0,
			nState * tMaskSize.cy + tEdgeSize.cy,
			tEdgeSize.cx,
			1,
			SRCCOPY);
		// Right
		_pDC->StretchBlt(
			m_rBtnSize.Width() - tCorrectedEdgeSize.cx, 
			nState * m_rBtnSize.Height() + tCorrectedEdgeSize.cy,
			tCorrectedEdgeSize.cx,
			m_rBtnSize.Height() - 2 * tCorrectedEdgeSize.cy,
			&SourceDC,
			tMaskSize.cx - tEdgeSize.cx,
			nState * tMaskSize.cy + tEdgeSize.cy,
			tEdgeSize.cx,
			1,
			SRCCOPY);
		/************************************************************************/
		/* Filling                                                              */
		/************************************************************************/
		_pDC->StretchBlt(
			tCorrectedEdgeSize.cx,
			nState * m_rBtnSize.Height() + tCorrectedEdgeSize.cy,
			m_rBtnSize.Width() - 2* tCorrectedEdgeSize.cx,
			m_rBtnSize.Height() - 2 * tCorrectedEdgeSize.cy,
			&SourceDC,
			tEdgeSize.cx,
			nState * tMaskSize.cy + tEdgeSize.cy,
			1,
			1,
			SRCCOPY);
	}

	// Select Old Objects into DCs
	SourceDC.SelectObject(hOldBmp1);
}

//! Draw Caption on Button
void CRoundButton2::DrawButtonCaption(CDC *_pDC)
{
	// Select Transparency for Background
	int nOldBckMode = _pDC->SetBkMode(TRANSPARENT);

	// Get old Text-Color
	COLORREF tOldColor = _pDC->SetTextColor(RGB(0,0,0));

	// Select Font into DC
	HGDIOBJ hOldFont = _pDC->SelectObject(&m_tBtnFont);

	// Get Caption of Button
	CString sCaption;
	this->GetWindowText(sCaption);

	for (int nState = 0; nState < BS_LAST_STATE; nState++)
	{
		switch(nState)
		{
		case BS_ENABLED:
			_pDC->SetTextColor(m_tTextColor.m_tEnabled);
			break;
		case BS_CLICKED:
			_pDC->SetTextColor(m_tTextColor.m_tClicked);
			break;
		case BS_PRESSED:
			_pDC->SetTextColor(m_tTextColor.m_tPressed);
			break;
		case BS_HOT:
			_pDC->SetTextColor(m_tTextColor.m_tHot);
			break;
		case BS_DISABLED:
		default:
			_pDC->SetTextColor(m_tTextColor.m_tDisabled);
			break;
		}

		_pDC->DrawText(
			sCaption, 
			CRect(
				m_rBtnSize.left, 
				nState * m_rBtnSize.Height() + m_rBtnSize.top, 
				m_rBtnSize.right, 
				nState * m_rBtnSize.Height() + m_rBtnSize.bottom),
			DT_CENTER | DT_VCENTER | DT_SINGLELINE);
	}

	// Select Old Font back
	_pDC->SelectObject(hOldFont);

	// Set old Background-Mode
	_pDC->SetBkMode(nOldBckMode);

	// Set old Text-Color
	_pDC->SetTextColor(tOldColor);
}

/************************************************************************/
/* Overwritten Functions for Init and Draw of Button                    */
/************************************************************************/

//! Presubclass-Window-Function
void CRoundButton2::PreSubclassWindow()
{
#ifdef _DEBUG
	// We really should be only sub classing a button control
	TCHAR buffer[255];
	GetClassName (m_hWnd, buffer, sizeof(buffer) / sizeof(TCHAR));
	ASSERT (CString (buffer) == _T("Button"));
#endif

	// Check if it's a default button
	if (GetStyle() & 0x0FL)
		m_bDefaultButton = true;

	// Make the button owner-drawn
	ModifyStyle (0x0FL, BS_OWNERDRAW | BS_AUTOCHECKBOX, SWP_FRAMECHANGED);

	CButton::PreSubclassWindow();
}

//! Draw-Item-Function
/*! This Function is called each time, the Button needs a redraw
*/
void CRoundButton2::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	// Get DC of Item
	CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
	ASSERT (pDC != NULL);

	// Should Buttons be generated?
	bool bGenerate = !m_rBtnSize.EqualRect(&lpDrawItemStruct->rcItem) || m_bRedraw;

	// If Rectangles of Button are not the same
	if (bGenerate)
	{
		// Generate Bitmap to hold Buttons
		GenButtonBMPs(pDC, lpDrawItemStruct->rcItem);

		// Redraw done
		m_bRedraw = false;
	}

	// Generate DC to draw in Memory
	CDC MemDC;
	MemDC.CreateCompatibleDC(pDC);

	HGDIOBJ hOldBmp = MemDC.SelectObject(m_tBmpBtn);

	CString sActualCaption;
	// Get actual caption
	GetWindowText(sActualCaption);

	// Check, if caption has changed
	if (sActualCaption != m_sOldCaption)
		bGenerate = true;

	// Store old caption
	m_sOldCaption = sActualCaption;

	// If Rectangles of Button are not the same
	if (bGenerate)
	{
		// Draw Buttons
		DrawButtonFace(&MemDC);

		// Draw Button-Caption
		DrawButtonCaption(&MemDC);
	}

	int nButtonState;

	nButtonState = BS_ENABLED;

	if (m_bIsHotButton && m_bMouseOnButton)
		nButtonState = BS_HOT;

	if ((lpDrawItemStruct->itemState & ODS_DISABLED) == ODS_DISABLED)
		nButtonState = BS_DISABLED;
	else
	{
		if ((lpDrawItemStruct->itemState & ODS_SELECTED) == ODS_SELECTED)
			nButtonState = BS_PRESSED;
		else
		{
			if (this->m_bIsChecked)
			{
				nButtonState = BS_CLICKED;
			}
		}
	}

	// Copy correct Bitmap to Screen
	pDC->BitBlt(
		lpDrawItemStruct->rcItem.left, 
		lpDrawItemStruct->rcItem.top, 
		m_rBtnSize.Width(), 
		m_rBtnSize.Height(), 
		&MemDC, 
		0, 
		m_rBtnSize.Height() * nButtonState, 
		SRCCOPY);

	MemDC.SelectObject(hOldBmp);
}


BEGIN_MESSAGE_MAP(CRoundButton2, CButton)
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_CAPTURECHANGED()
END_MESSAGE_MAP()

void CRoundButton2::OnLButtonUp(UINT nFlags, CPoint point)
{
	if (m_bIsCheckButton)
	{
		m_bIsChecked = !m_bIsChecked;
	}
	if (m_bIsRadioButton)
	{
		m_bIsChecked = true;
	}

	CButton::OnLButtonUp(nFlags, point);
}

void CRoundButton2::OnMouseMove(UINT nFlags, CPoint point)
{
	CRect rcClient;

	// Get Rectangle of Client
	GetClientRect(rcClient);

	// Check, if Mouse is on Control
	if (rcClient.PtInRect(point))
	{
		// We only need to redraw, if the mouse enters
		bool bRedrawNeeded = !m_bMouseOnButton;

		// Mouse is on Control
		m_bMouseOnButton = true;

		// Set Capture to recognize, when the mouse leaves the control
		SetCapture();

		// Redraw Control, if Button is hot
		if (m_bIsHotButton)
			Invalidate();
	}
	else
	{
		// We have lost the mouse-capture, so the mouse has left the buttons face
		m_bMouseOnButton = false;

		// Mouse has left the button
		ReleaseCapture();

		// Redraw Control, if Button is hot
		if (m_bIsHotButton)
			Invalidate();
	}

	CButton::OnMouseMove(nFlags, point);
}
void CRoundButton2::OnCaptureChanged(CWnd *pWnd)
{
	// Check, if we lost the mouse-capture
	if (GetCapture() != this)
	{
		// We have lost the mouse-capture, so the mouse has left the buttons face
		m_bMouseOnButton = false;

		// Redraw Control, if Button is hot
		if (m_bIsHotButton)
			Invalidate();
	}

	CButton::OnCaptureChanged(pWnd);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区中文 | 欧美成人伊人久久综合网| 亚洲综合色婷婷| 欧美日韩中文国产| 免费一区二区视频| 精品国产乱码久久久久久影片| 美日韩一区二区| 日韩欧美国产综合| 国产精品一区二区免费不卡| 欧美激情在线免费观看| 在线精品亚洲一区二区不卡| 亚洲综合丝袜美腿| 欧美成va人片在线观看| 波多野洁衣一区| 亚洲亚洲精品在线观看| 91精品福利视频| 久久国产视频网| 国产精品日产欧美久久久久| 99久久99久久精品国产片果冻| 亚洲欧洲一区二区在线播放| 久久伊人蜜桃av一区二区| 激情六月婷婷综合| 亚洲综合在线电影| 精品国产91乱码一区二区三区 | 国产精品传媒视频| 欧美视频第二页| 国产福利精品一区| 首页亚洲欧美制服丝腿| 日韩理论片一区二区| 欧美r级在线观看| 555www色欧美视频| 欧美性感一类影片在线播放| 秋霞国产午夜精品免费视频| 亚洲欧洲av在线| 精品国产乱码久久久久久闺蜜| 91色婷婷久久久久合中文| 国产 日韩 欧美大片| 日本不卡一区二区三区| 亚洲线精品一区二区三区| 一区二区三区日韩在线观看| 一区二区三区加勒比av| 亚洲制服丝袜一区| 亚洲福利一二三区| 午夜精品一区二区三区免费视频| 性欧美疯狂xxxxbbbb| 欧美激情一区在线观看| 久久女同性恋中文字幕| 精品奇米国产一区二区三区| 日韩欧美在线1卡| 日韩免费成人网| 国产视频911| 欧美国产一区视频在线观看| 国产精品国产三级国产三级人妇| 3d动漫精品啪啪一区二区竹菊 | 亚洲人午夜精品天堂一二香蕉| 国产精品视频观看| 亚洲综合另类小说| 久久国产精品区| 国产毛片精品视频| 91麻豆免费在线观看| 欧美在线免费视屏| 久久久噜噜噜久久人人看| 欧美激情在线一区二区| 亚洲精品成a人| 久88久久88久久久| 成人免费三级在线| 欧美日韩中字一区| 久久久久久久久久久久久女国产乱| 日本一区二区在线不卡| 亚洲午夜久久久久久久久久久 | 成人成人成人在线视频| 欧美精选一区二区| 国产精品国产三级国产aⅴ原创| 亚洲色图在线视频| 狠狠色狠狠色合久久伊人| 91免费精品国自产拍在线不卡| 欧美成人三级在线| 一片黄亚洲嫩模| 成人深夜福利app| 日韩欧美黄色影院| 亚洲高清视频在线| 99精品视频在线播放观看| 国产蜜臀av在线一区二区三区| 首页亚洲欧美制服丝腿| 色偷偷久久一区二区三区| 国产欧美久久久精品影院| 国产一区二区按摩在线观看| 精品日韩在线一区| 麻豆一区二区在线| 国产欧美日本一区视频| 国产成人精品免费| 久久亚洲精精品中文字幕早川悠里 | 91丨porny丨首页| 亚洲国产精品国自产拍av| 国产成人在线观看免费网站| 久久伊人蜜桃av一区二区| 国产一区二区三区美女| 久久这里只有精品首页| 国内精品国产三级国产a久久| 日韩欧美精品在线视频| 国产一区美女在线| 久久精品欧美一区二区三区不卡| 成人综合在线网站| 亚洲乱码国产乱码精品精的特点 | 91日韩在线专区| 亚洲国产欧美日韩另类综合| 欧美在线视频你懂得| 日韩高清不卡在线| 国产清纯白嫩初高生在线观看91 | 国产成人亚洲综合色影视| 亚洲男人天堂一区| 91精品国产综合久久福利| 老司机精品视频线观看86| 中文字幕av在线一区二区三区| 91在线视频播放| 久久99久久久欧美国产| 国产精品青草综合久久久久99| 色婷婷激情综合| 国产成人啪免费观看软件| 亚洲一二三级电影| 久久免费精品国产久精品久久久久| 99久久久久免费精品国产 | 久久精品人人做人人爽人人| 91日韩精品一区| 国产精品一二三| 美腿丝袜亚洲色图| 亚洲一区在线观看免费观看电影高清| 日韩精品一区国产麻豆| 在线欧美日韩精品| 成人精品一区二区三区中文字幕| 天堂蜜桃一区二区三区 | 一区二区三区高清在线| 久久精品人人爽人人爽| 777午夜精品视频在线播放| 色婷婷久久综合| 99久久综合狠狠综合久久| 国产91精品在线观看| 国产精品77777| 国产黄色精品视频| 九色porny丨国产精品| 免费人成在线不卡| 欧美a级理论片| 美腿丝袜亚洲综合| 国产在线视频一区二区| 国精产品一区一区三区mba视频 | 亚洲色图色小说| 亚洲女与黑人做爰| 成人黄色免费短视频| 9i在线看片成人免费| 91在线一区二区| 在线观看日韩电影| 在线观看成人免费视频| 欧美日韩久久久一区| 欧美一区二区三区在线观看视频| 欧美一区二区三区婷婷月色| 欧美一区二区三区在线| 久久综合久久99| 国产精品国产三级国产普通话99 | 精品区一区二区| 中文字幕综合网| 日本aⅴ免费视频一区二区三区| 激情综合网av| 99久久综合狠狠综合久久| 欧美人伦禁忌dvd放荡欲情| 精品国产乱码久久久久久牛牛 | 欧美视频精品在线观看| 精品国产污污免费网站入口| 一区免费观看视频| 精品在线免费视频| 欧美日韩视频在线观看一区二区三区 | 在线看国产一区| 中文字幕av一区二区三区高| 日韩精品电影在线| 91国内精品野花午夜精品 | 欧美一个色资源| 亚洲动漫第一页| 91伊人久久大香线蕉| 日韩免费高清视频| 亚洲电影一区二区| 色婷婷久久久亚洲一区二区三区| 久久美女高清视频| 久草热8精品视频在线观看| 欧美天堂亚洲电影院在线播放| 中文字幕乱码一区二区免费| 久久97超碰国产精品超碰| 欧美一卡二卡三卡四卡| 亚洲福利视频三区| 欧美日韩视频在线一区二区| 亚洲综合一区二区| 欧美中文字幕一区二区三区| 亚洲激情av在线| 在线视频中文字幕一区二区| 亚洲欧美日韩一区二区三区在线观看| 国产a久久麻豆| |精品福利一区二区三区| 99这里只有精品| 一区二区三区欧美久久| 欧美在线看片a免费观看| 亚洲午夜精品网| 日韩免费电影一区|