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

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

?? mftrafficbutton.cpp

?? vc++網絡編程教程的源碼??赡軐κ褂胿c網絡編程的有用。
?? CPP
字號:
#include "stdafx.h"
#include "MFTrafficButton.h"
#include "MemDC.h"
#include <math.h>

#ifndef _WIN32_IE
	#define _WIN32_IE 0x0500
#endif



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


/////////////////////////////////////////////////////////////////////////////
// MFTrafficButton

MFTrafficButton::MFTrafficButton()
{
	brushInitalized = FALSE;
	interfaceCallBack = NULL;
	useAdaptiveScale = FALSE;
	gridxstartpos = 0;
	gridystartpos = 0;
	gridxresolution		=	GRIDXRESOLUTION;
	gridyresolution		=	GRIDYRESOLUTION;
	gridscrollxspeed	=	GRIDSCROLLXSPEED;
	gridscrollyspeed	=	GRIDSCROLLYSPEED; 
	plotgranularity		=	PLOTGRANULATRITY;
	netupdatespeed		=	NETUPDATESPEED;
	gridupdatespeed		=	GRIDUPDATESPEED;
	ToggleStatusText	=	"局部最大值";
}

MFTrafficButton::~MFTrafficButton()
{

}


BEGIN_MESSAGE_MAP(MFTrafficButton, CButton)
	//{{AFX_MSG_MAP(MFTrafficButton)
	ON_WM_TIMER()
	ON_WM_RBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// MFTrafficButton message handlers



void MFTrafficButton::PreSubclassWindow() 
{

	CButton::PreSubclassWindow();
	// 這個函數確保這個button是用來繪制的而不是接收按下的消息的
	ModifyStyle( 0 , BS_OWNERDRAW );

	this->GetWindowRect(&TrafficDrawRectangle);
	this->GetWindowRect(&TrafficDrawUpdateRectangle);
	ScreenToClient(&TrafficDrawUpdateRectangle);
	ScreenToClient(&TrafficDrawRectangle);

	TGSize.cx = TrafficDrawRectangle.right - TrafficDrawRectangle.left;
	TGSize.cy = TrafficDrawRectangle.bottom - TrafficDrawRectangle.top;

	initalized = FALSE;
	MaxTrafficAmount = 0.0;
	SelectedInterface = 0;
	
	smallFont.CreateFont(-10,0,0,0,FW_THIN, FALSE, FALSE, FALSE, DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH, "Times New Roman");

	red		= RGB(255,125,125);
	green	= RGB(125,255,125);
	cyan	= RGB(0,255,255);
	darkblue= RGB(0,0,75);
//	darkblue= RGB(255,255,255);
	darkgray= RGB(50,50,50);
	white	= RGB(255,255,255);
	black	= RGB(0,0,0);
	lightgreen	= RGB(156,255,156);
	darkgreen	= RGB(32,64,32);
//	darkgreen    =0;
	greenbrush.CreateSolidBrush(green);
	redbrush.CreateSolidBrush(red);
	GridPen.CreatePen(PS_SOLID ,1 , darkgreen);
	GetWindowRect(&TrafficDrawRectangle);
	ScreenToClient(&TrafficDrawRectangle);

	
	TGSize.cx = TrafficDrawRectangle.right - TrafficDrawRectangle.left;
	TGSize.cy = TrafficDrawRectangle.bottom - TrafficDrawRectangle.top;
	
	
	TrafficEntries = TGSize.cx / plotgranularity;
	TrafficStats = new TRAFFICENTRY[TrafficEntries+1];
	
	for(DWORD x=0; x<TrafficEntries; x++)
	{
		TrafficStats[x].connected = TRUE;//FALSE;
		TrafficStats[x].value	= 0.0;//(float)x * (float)TrafficEntries*0.05;//;10.0 + 10.0*(sin(5.0*(float)x*3.14/180.0));
	}
	
	MaxTrafficAmount = 0.0;
	SelectedInterface = 0;

	CRgn rectRgn, ellRgn, finalRgn;
	rectRgn.CreateRectRgn(0,0,TGSize.cx, TGSize.cy);
	ShapeWNDRegion.CreateRectRgn(0,0,TGSize.cx, TGSize.cy);;
	ShapeDCRegion.CreateRectRgn(0,0,TGSize.cx, TGSize.cy);;

	int x1,x2,y1,y2,xe,ye,xs,ys;
	int xof, yof;
	int r;
	xs = TGSize.cx;
	ys = TGSize.cy;
	x1 = 0;
	y1 = 0;
	x2 = xs;
	y2 = ys;
	xe = 5;//Radius of edge
	ye = 5;//Radius of edge
	xof = (int)( (float)xs*0.0);
	yof = (int)( (float)ys*0.0);
	r = ellRgn.CreateRoundRectRgn(x1,y1,x2,y2,xe,ye);
	r = ellRgn.OffsetRgn(-xof, -yof);
	r = ShapeWNDRegion.CombineRgn(&rectRgn, &ellRgn,RGN_AND );
	r = ShapeDCRegion.CombineRgn(&rectRgn, &ellRgn,RGN_AND );

	this->SetWindowRgn((HRGN)ShapeWNDRegion, TRUE);
	initalized = TRUE;

	SetTimer(GRIDTIMER,	gridupdatespeed,	0);
	SetTimer(NETTIMER,	netupdatespeed,		0);

}


void MFTrafficButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// TODO: Add your message handler code here and/or call default
//	CButton::OnDrawItem(nIDCtl, lpDrawItemStruct);

	ASSERT( lpDrawItemStruct != NULL );

	CDC * pDC   = CDC::FromHandle( lpDrawItemStruct -> hDC );
	int erg = pDC->SelectClipRgn(&ShapeDCRegion);

	CRect rect = lpDrawItemStruct -> rcItem;
	UINT state = lpDrawItemStruct -> itemState;
	UINT nStyle = GetStyle( );

	int nSavedDC = pDC -> SaveDC( );

	// Create the brush for the color bar
	if(brushInitalized == FALSE)
	{
		CBitmap bmp;
		CMemDC *memDC = new CMemDC(pDC);
		
		RECT clipRect;
		memDC->GetClipBox(&clipRect);

		if(clipRect.right - clipRect.left > 1)
		{
			bmp.CreateCompatibleBitmap(memDC,plotgranularity, TGSize.cy);
			CBitmap *pOld = memDC->SelectObject(&bmp);
			
			CSize bmps = bmp.GetBitmapDimension();		
			
			double factor = 255.0 / (float)TGSize.cy;
			BYTE r,g,b;
			for(int x = 0; x<TGSize.cy; x++)
			{
				g = (BYTE)(255-factor*x);
				r = (BYTE)(factor*x);
				b = (BYTE)64;
				memDC->SetPixelV(0,x,RGB(r,g,b));
				memDC->SetPixelV(1,x,RGB(r,g,b));
			}
			memDC->SelectObject(pOld);

			colorbrush.CreatePatternBrush(&bmp);	
			brushInitalized = TRUE;
		}
	}
	if(initalized == TRUE)
	{
		COLORREF backcolor = GetSysColor(COLOR_BTNFACE);
		
		CBrush brush;
		CMemDC *memDC = new CMemDC(pDC);
		
		RECT clipRect;
		memDC->GetClipBox(&clipRect);
		memDC->FillSolidRect(&clipRect,backcolor);
		
		CFont *oldFont;
		int xp, yp, xx, yy;
		orgBrushOrigin = memDC->GetBrushOrg();
		
		oldFont = memDC->SelectObject(&smallFont);
		
		double scale = (double)TGSize.cy / (double)MaxTrafficAmount;
		
		yp = TrafficDrawRectangle.bottom;
		xp = TrafficDrawRectangle.left;
		
		RECT fillrect;
		
		CString tmp;
		
		// 填充背景
		back = memDC->GetBkColor();
		brush.CreateSolidBrush(darkblue);
		memDC->FillRect(&TrafficDrawRectangle, &brush);

		// 畫網格
		int xgridlines, ygridlines;
		
		xgridlines = TGSize.cx / gridxresolution;
		ygridlines = TGSize.cy / gridyresolution;
		CPen* oldPen = memDC->SelectObject(&GridPen);
		// 創建垂直線
		for (int x=0; x<= xgridlines; x++)
		{
			memDC->MoveTo(x*gridxresolution + gridxstartpos, 0			);
			memDC->LineTo(x*gridxresolution + gridxstartpos, TGSize.cy	);
		}
		// 添加水平線
		for (int y=0; y<= ygridlines; y++)
		{
			memDC->MoveTo(0			, gridystartpos + TGSize.cy - y*gridyresolution - 2);
			memDC->LineTo(TGSize.cx	, gridystartpos + TGSize.cy - y*gridyresolution - 2);
		}

		gridxstartpos += gridscrollxspeed;
		gridystartpos += gridscrollyspeed;
		if(gridxstartpos < 0				) gridxstartpos = gridxresolution;
		if(gridxstartpos > gridxresolution	) gridxstartpos = 0;
		if(gridystartpos < 0				) gridystartpos = gridyresolution;
		if(gridystartpos > gridyresolution	) gridystartpos = 0;


		memDC->SelectObject(oldPen );

		for(DWORD cnt=0; cnt<TrafficEntries; cnt++)
		{
			xx = xp + cnt*plotgranularity;
			double traffic = (double)TrafficStats[cnt].value; 
			yy = yp - (int)((double)TrafficStats[cnt].value * scale);
			
			// 網絡處在連接狀態才繪制
			if(TrafficStats[cnt].connected == TRUE)
			{
				fillrect.bottom = yp;
				fillrect.top	= yy;
				fillrect.left	= xx;
				fillrect.right	= xx+plotgranularity;
				memDC->SetBrushOrg(xx,yp);
				if(TrafficStats[cnt].value > 0.0) 
				{
					memDC->FillRect(&fillrect, &colorbrush);
					memDC->SetPixelV(xx, yy, cyan);
				}
			}
		}
		
		tmp.Format("%8.1f",TrafficStats[TrafficEntries-1].value);
		COLORREF textcolor = memDC->GetTextColor();
		int bkmode = memDC->GetBkMode();
		memDC->SetBkMode(TRANSPARENT);
		memDC->SetTextColor(darkblue);
		memDC->TextOut(6,5,AllTraffic);
		memDC->SetTextColor(cyan);
//		memDC->SetTextColor(darkblue);
		memDC->TextOut(5,5,AllTraffic); 
		memDC->SetTextColor(textcolor);
		memDC->SetBkMode(bkmode);
		
		memDC->SelectObject(oldFont);
		memDC->SetBrushOrg(orgBrushOrigin.x, orgBrushOrigin.y);
	
		delete memDC;
	}	
	pDC -> RestoreDC( nSavedDC );

}

void MFTrafficButton::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent == NETTIMER)
	{
		
#ifdef _I_HAVE_PLATFORM_SDK_INSTALLED_		

		DWORD flag, reserved;
		BOOL erg;
		flag = 0;//INTERNET_CONNECTION_OFFLINE ;
		reserved = 0;
		TCHAR connectionname[1024];
		erg =  InternetGetConnectedStateEx(
			&flag,	//OUT LPDWORD lpdwFlags,
			(LPTSTR)&connectionname,//OUT LPTSTR lpszConnectionName,
			1024,//IN DWORD dwNameLen,
			0//IN DWORD dwReserved
			);
		
		isOnline = erg;
#else
		isOnline = TRUE;
#endif		

		// 得到當前的流量
		double traffic = m_cTrafficClass.GetTraffic(SelectedInterface);
		DWORD  totaltraffic = m_cTrafficClass.GetInterfaceTotalTraffic(SelectedInterface);
		
		double delta1;
		double divisor = (1000.0/(double)NETUPDATESPEED);
		delta1 = (double)(traffic * divisor) / 1024.0;
		CurrentTraffic.Format("當前流量: %.1f KB/sec",delta1);
		
		
		// Should we recalculate the local maximum per session or per display?
		if(useAdaptiveScale==TRUE)
		{
			MaxTrafficAmount = 0.0;
		}
		// Shift whole array 1 step to left and calculate local maximum
		for(DWORD x=0; x<TrafficEntries; x++)
		{
			TrafficStats[x].connected = TrafficStats[x+1].connected;
			TrafficStats[x].value	= TrafficStats[x+1].value;
			if(TrafficStats[x].value > MaxTrafficAmount)
				MaxTrafficAmount = TrafficStats[x].value;
		}
		if(isOnline == TRUE)
		{
			TrafficStats[TrafficEntries].connected = TRUE;
			TrafficStats[TrafficEntries].value = traffic;
			if(TrafficStats[TrafficEntries].value > MaxTrafficAmount)
				MaxTrafficAmount = TrafficStats[TrafficEntries].value;
		}
		else
		{
			TrafficStats[TrafficEntries].connected = FALSE;
			TrafficStats[TrafficEntries].value = traffic;
			if(TrafficStats[TrafficEntries].value > MaxTrafficAmount)
				MaxTrafficAmount = TrafficStats[TrafficEntries].value;
		}
		
		double delta2;
		divisor = (1000.0/(double)NETUPDATESPEED);
		delta2 = (double)(MaxTrafficAmount * divisor) / 1024.0;
		MaximalTraffic.Format("最大流量:%.1f KB/sec",delta2);
		AllTraffic.Format("總流量為: %.1f / %.1f KB/sec",delta1, delta2);
		
	}

	// 繪制
	Invalidate(FALSE);

	CButton::OnTimer(nIDEvent);
}

//創建右鍵按下后產生的一個pop-up菜單
void MFTrafficButton::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
#define STARTINDEX	2000
#define ENDINDEX	2999
#define SET_SCALING	3000

	HMENU hMenu , hPopup;
	long retId = 0;
	int InterfaceIndex = STARTINDEX;
	POINT pt;
	
	hMenu = CreatePopupMenu( );			  
	if( hMenu )
	{	
		//  If the menu was created, add the item text
		CString tmp, tmp2;
		double tottraff = (double)m_cTrafficClass.GetInterfaceTotalTraffic(SelectedInterface) / (1024.0*1024.0);
		m_cTrafficClass.GetNetworkInterfaceName(&tmp, SelectedInterface);
		tmp2.Format("接口名稱:%s : %.1f MB", tmp, tottraff);
		
		AppendMenu( hMenu , MF_STRING , 1001 , tmp2 );
		AppendMenu( hMenu , MF_SEPARATOR , 1000 , NULL );
		// Submenu
		hPopup = CreatePopupMenu( );			  //  Create a new popup menu
		if( hPopup )
		{
			CString tmp;
			int cnt;
			for(cnt=0; cnt<=m_cTrafficClass.GetNetworkInterfacesCount(); cnt++)
			{
				CString tmp2;
				double tottraff = (double)m_cTrafficClass.GetInterfaceTotalTraffic(cnt) / (1024.0*1024.0);
				m_cTrafficClass.GetNetworkInterfaceName(&tmp, cnt);
				
				tmp2.Format("%s : %.1f MB", tmp, tottraff);
				AppendMenu( hPopup , MF_STRING , InterfaceIndex++ , tmp2 );
			}
			AppendMenu( hMenu , MF_POPUP , ( UINT )hPopup , "選擇一個接口" );
			AppendMenu( hMenu , MF_SEPARATOR , 1000 , NULL );
			AppendMenu( hMenu , MF_STRING , SET_SCALING , "鎖定的縮放比例:" + 	ToggleStatusText);
		}
	}
	
	GetCursorPos( & pt );			
	//顯示菜單
	retId = TrackPopupMenu( hMenu , TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD ,  pt.x , pt.y , 0 , this -> m_hWnd , NULL );  //  start the menu
	DestroyMenu( hMenu );			
	if( retId == 0 )
	{
		return;
	}
	else
	{
		if(retId == SET_SCALING)
		{
			if(useAdaptiveScale == TRUE)
			{
				useAdaptiveScale = FALSE;
				ToggleStatusText = "全局最大值";
			}
			else
			{
				useAdaptiveScale = TRUE;
				ToggleStatusText = "局部最大值";
			}
		}
		if((retId>=STARTINDEX) && (retId<ENDINDEX) )
		{
			SelectedInterface = retId-STARTINDEX;
			InterfaceHasChanged();
			ReInit(SelectedInterface);
		}
	}
	
	CButton::OnRButtonDown(nFlags, point);
}

void MFTrafficButton::ReInit(RECT newSize)
{
	KillTimer(GRIDTIMER);
	KillTimer(NETTIMER);

	delete [] TrafficStats;

	TGSize.cx = newSize.right - newSize.left;
	TGSize.cy = newSize.bottom - newSize.top;

	TrafficEntries = TGSize.cx / plotgranularity;
	TrafficStats = new TRAFFICENTRY[TrafficEntries+1];
	
	MaxTrafficAmount = 0.0;
	SelectedInterface = 0;
	
	for(DWORD x=0; x<TrafficEntries; x++)
	{
		TrafficStats[x].connected = TRUE;
		TrafficStats[x].value	= 0.0;
	}
	m_cTrafficClass.GetTraffic(SelectedInterface);
	m_cTrafficClass.GetTraffic(SelectedInterface);
	MaxTrafficAmount = 0.0;
	SetTimer(GRIDTIMER,	gridupdatespeed,	0);
	SetTimer(NETTIMER,	netupdatespeed,		0);
	
}

//監視其他接口
void MFTrafficButton::ReInit(int newInterface)
{
	KillTimer(GRIDTIMER);
	KillTimer(NETTIMER);

	SelectedInterface = newInterface;

	for(DWORD x=0; x<TrafficEntries; x++)
	{
		TrafficStats[x].connected = TRUE;
		TrafficStats[x].value	= 0.0;
	}
	m_cTrafficClass.GetTraffic(SelectedInterface);
	m_cTrafficClass.GetTraffic(SelectedInterface);
	MaxTrafficAmount = 0.0;
	SetTimer(GRIDTIMER,	gridupdatespeed,	0);
	SetTimer(NETTIMER,	netupdatespeed,		0);
	
}

//設置更新速度
void MFTrafficButton::SetUpdateSpeed(UINT netspeed, UINT gridspeed)
{
	gridupdatespeed	= gridspeed;
	netupdatespeed	= netspeed;
	KillTimer(GRIDTIMER);
	KillTimer(NETTIMER);
	SetTimer(GRIDTIMER,	gridupdatespeed,	0);
	SetTimer(NETTIMER,	netupdatespeed,		0);
}


//回調函數
void MFTrafficButton::InterfaceHasChanged()
{
	if(interfaceCallBack !=NULL)
	{
		interfaceCallBack(SelectedInterface);
	}
}

void MFTrafficButton::SetInterfaceNumberNotificationFunction(INTERFACECHANCEDPROC callfunct)
{
	interfaceCallBack = callfunct;	
}

void MFTrafficButton::SelectTrafficType(int trafficType)
{
	switch(trafficType)
	{
	case Traffic_Incoming: 	m_cTrafficClass.SetTrafficType(MFNetTraffic::IncomingTraffic); break;
	case Traffic_Outgoing:	m_cTrafficClass.SetTrafficType(MFNetTraffic::OutGoingTraffic); break;
	case Traffic_Total:		m_cTrafficClass.SetTrafficType(MFNetTraffic::AllTraffic); break;
	default:				m_cTrafficClass.SetTrafficType(MFNetTraffic::AllTraffic);
	}
}
void MFTrafficButton::SetInterfaceNumber(int interfacenumber)
{
	SelectedInterface = interfacenumber;
	ReInit(SelectedInterface);
}

void MFTrafficButton::SetAdaptiveScaling(BOOL adaptive)
{
	useAdaptiveScale = adaptive;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频在线| 国产亚洲综合在线| 日韩欧美一区二区视频| 国产偷国产偷亚洲高清人白洁| 激情综合色播五月| 国产91精品入口| 欧美性xxxxx极品少妇| 日韩欧美综合在线| 国产欧美一区二区三区鸳鸯浴| 亚洲美女在线一区| 久久国产精品99久久久久久老狼 | 欧美日韩一级片网站| 日韩欧美在线不卡| 国产精品剧情在线亚洲| 日韩成人dvd| fc2成人免费人成在线观看播放| 欧美视频精品在线| 国产日韩精品一区二区三区| 亚洲国产日韩在线一区模特| 国产精品中文字幕日韩精品| 在线观看国产日韩| 久久久av毛片精品| 亚洲第一搞黄网站| eeuss国产一区二区三区| 欧美一级片免费看| 亚洲欧美日韩国产成人精品影院| 老司机免费视频一区二区| 一本一道综合狠狠老| 久久综合999| 午夜久久电影网| 成人av中文字幕| 精品国产精品一区二区夜夜嗨| 亚洲欧美日韩综合aⅴ视频| 国产最新精品免费| 7777精品伊人久久久大香线蕉的 | 91无套直看片红桃| 精品国产不卡一区二区三区| 亚洲一二三四区不卡| 国产成人综合在线播放| 91精品国产色综合久久不卡电影| 中文字幕不卡在线| 九色|91porny| 91麻豆精品国产91久久久久久久久 | 日韩毛片视频在线看| 卡一卡二国产精品| 欧美群妇大交群中文字幕| 亚洲欧洲一区二区在线播放| 激情文学综合插| 337p亚洲精品色噜噜| 亚洲综合色区另类av| 99免费精品在线| 久久久精品影视| 激情图区综合网| 日韩免费在线观看| 免费三级欧美电影| 欧美一区二区高清| 午夜激情一区二区| 欧美视频一二三区| 亚洲午夜激情av| 欧美性视频一区二区三区| 国产精品自在在线| 欧美一级二级三级蜜桃| 天天亚洲美女在线视频| 欧美性生活影院| 亚洲成人激情自拍| 欧美日韩成人综合| 亚洲国产精品一区二区久久恐怖片 | 久久综合久久综合亚洲| 久久电影网电视剧免费观看| 日韩精品一区二区三区蜜臀| 奇米色一区二区| 欧美一区二区观看视频| 麻豆91精品91久久久的内涵| 欧美一区二区三区视频免费| 日本vs亚洲vs韩国一区三区| 欧美一区二区三级| 美女一区二区在线观看| 精品欧美黑人一区二区三区| 免费视频最近日韩| www欧美成人18+| 高清成人免费视频| 国产精品国产三级国产aⅴ入口 | 亚洲一区二区四区蜜桃| 欧美午夜精品理论片a级按摩| 亚洲成人资源网| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品系列在线观看| 日韩欧美高清一区| 国产在线不卡一区| 国产精品视频一区二区三区不卡| 久久国产夜色精品鲁鲁99| 精品少妇一区二区三区| 久草中文综合在线| 国产精品欧美极品| 欧美亚洲一区二区在线| 日本不卡一二三| 午夜不卡在线视频| 亚洲国产va精品久久久不卡综合| 色拍拍在线精品视频8848| 亚洲免费在线观看视频| 欧美日韩国产成人在线91| 麻豆精品久久精品色综合| 精品国产乱码久久久久久久 | 精品久久久久久综合日本欧美| 久久99久久精品| 久久久一区二区三区捆绑**| 99riav一区二区三区| 亚洲成人动漫精品| 亚洲精品一区二区三区香蕉| 成人免费看的视频| 亚洲一二三区在线观看| 欧美mv和日韩mv国产网站| av电影天堂一区二区在线观看| 亚洲五码中文字幕| 精品精品欲导航| 成人午夜免费av| 午夜视频一区二区三区| 久久这里只有精品首页| 91美女片黄在线| 免费国产亚洲视频| 亚洲欧洲日韩女同| 91精品国产综合久久小美女| 粉嫩av亚洲一区二区图片| 亚洲不卡在线观看| 国产日本欧美一区二区| 国产精品国产三级国产aⅴ中文| 欧美在线观看禁18| 国产精品一级在线| 性感美女久久精品| 国产喷白浆一区二区三区| 欧美日韩国产美女| 成人午夜视频在线观看| 日韩二区在线观看| 综合电影一区二区三区 | 国产福利一区在线| 亚洲福中文字幕伊人影院| 国产亚洲欧美色| 欧美欧美午夜aⅴ在线观看| 成人黄色电影在线| 久久er精品视频| 亚洲国产精品视频| 国产精品不卡在线观看| 日韩精品一区二区在线| 欧美午夜精品理论片a级按摩| 成人网男人的天堂| 久久疯狂做爰流白浆xx| 亚洲一区二区三区激情| 中文字幕精品—区二区四季| 日韩精品一区二区三区swag | 性久久久久久久| 最新不卡av在线| 国产欧美日韩激情| 日韩欧美亚洲一区二区| 欧美日韩国产中文| 色呦呦网站一区| 成人免费视频国产在线观看| 免费av网站大全久久| 亚洲福利一二三区| 亚洲精品自拍动漫在线| 国产精品丝袜一区| 久久九九99视频| 精品电影一区二区| 欧美一区二区三区人| 欧美私人免费视频| 91欧美一区二区| 成人av片在线观看| 国产福利精品一区| 国产精品18久久久久久久久久久久 | www.一区二区| 国产宾馆实践打屁股91| 狠狠v欧美v日韩v亚洲ⅴ| 秋霞电影网一区二区| 日韩高清中文字幕一区| 手机精品视频在线观看| 亚洲一区二区三区视频在线| 一区二区不卡在线播放 | 欧美专区在线观看一区| 日本韩国一区二区三区视频| 97se亚洲国产综合自在线| 成人黄色小视频| www.欧美亚洲| 99精品欧美一区| 91色综合久久久久婷婷| 99久久免费视频.com| av激情亚洲男人天堂| jlzzjlzz亚洲女人18| 成人一区在线看| 91美女福利视频| 欧美在线观看你懂的| 欧美日韩国产综合久久| 欧美一区二区三区人| 精品国产人成亚洲区| 久久久久国产一区二区三区四区| 久久精品亚洲一区二区三区浴池| 日本一区二区三区在线不卡| 中文字幕中文在线不卡住| 亚洲色图欧洲色图| 午夜亚洲福利老司机| 日韩激情视频在线观看| 久久99在线观看|