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

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

?? mftrafficbutton.cpp

?? 網管人員一般會根據計算機不同時段的網絡流量的變化對計算機進行各項參數優(yōu)化。本軟件可實現對網絡流量的監(jiān)控
?? 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);
		// 創(chuàng)建垂直線
		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);
			
			// 網絡處在連接狀態(tài)才繪制
			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);
}

//創(chuàng)建右鍵按下后產生的一個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);
	
}

//監(jiān)視其他接口
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一区二区三区免费野_久草精品视频
成人性生交大片免费看中文| 在线观看一区日韩| 欧洲精品在线观看| 精品福利一二区| 亚洲伦在线观看| 经典一区二区三区| 在线看日本不卡| 中文在线一区二区| 看片的网站亚洲| 欧美做爰猛烈大尺度电影无法无天| 亚洲精品一区二区三区影院 | 亚洲欧洲在线观看av| 亚洲妇熟xx妇色黄| 91丨porny丨户外露出| 欧美刺激脚交jootjob| 亚洲妇女屁股眼交7| 99久久久精品| 亚洲国产精品t66y| 国产一区欧美日韩| 欧美一区欧美二区| 婷婷国产在线综合| 91网站最新网址| 欧美国产激情一区二区三区蜜月| 蜜臀av性久久久久蜜臀aⅴ| 在线精品视频小说1| 中文字幕一区二区5566日韩| 国内精品国产成人| 精品久久久三级丝袜| 日韩高清中文字幕一区| 欧美日韩在线综合| 亚洲国产欧美另类丝袜| 日本福利一区二区| 一区二区三区在线视频观看| 91蜜桃网址入口| 亚洲精品一二三| 色伊人久久综合中文字幕| 成人免费小视频| fc2成人免费人成在线观看播放 | 久久综合精品国产一区二区三区| 婷婷一区二区三区| 欧美一区二区三区影视| 免费观看在线综合色| 91精品免费在线观看| 麻豆freexxxx性91精品| 911精品国产一区二区在线| 视频一区在线视频| 日韩一区二区三区三四区视频在线观看| 亚洲综合一区二区三区| 欧美色倩网站大全免费| 免费在线看一区| 精品国产免费人成在线观看| 国产麻豆91精品| 国产精品国产三级国产| 色一情一伦一子一伦一区| 亚洲综合免费观看高清完整版在线| 欧美影院一区二区三区| 三级影片在线观看欧美日韩一区二区| 欧美猛男男办公室激情| 美女脱光内衣内裤视频久久影院| 精品国产乱码久久久久久图片| 国产精品一区二区黑丝| 亚洲欧洲av另类| 欧美日韩色综合| 国产精品一区三区| 亚洲色图欧洲色图| 91麻豆精品久久久久蜜臀| 国产精品一区二区视频| 亚洲视频你懂的| 日韩免费一区二区| 成人精品一区二区三区四区| 亚洲成a天堂v人片| 久久一留热品黄| 色综合久久88色综合天天6| 日韩av电影免费观看高清完整版 | 午夜天堂影视香蕉久久| 日韩欧美电影一区| 成人app下载| 日韩一区精品字幕| 国产精品青草综合久久久久99| 91色视频在线| 国产在线精品一区二区三区不卡| 亚洲婷婷综合久久一本伊一区| 91精品国产一区二区人妖| 成人av动漫网站| 美女精品自拍一二三四| 亚洲欧美另类小说| 久久久久久久久久看片| 欧美性三三影院| 成人免费视频播放| 蜜桃av一区二区| 亚洲国产视频一区二区| 亚洲福利视频三区| 久久精品一区二区三区av| 欧美日韩美少妇| 色综合久久99| www.日韩av| 国产尤物一区二区在线| 日韩国产在线一| 亚洲精品免费看| 国产精品久久久久久久久快鸭| 91精品国产美女浴室洗澡无遮挡| 91麻豆福利精品推荐| 国v精品久久久网| 国产一区二区不卡| 美女一区二区久久| 日韩av在线免费观看不卡| 亚洲国产精品影院| 亚洲欧美日韩人成在线播放| 欧美国产精品一区二区三区| 亚洲精品一区二区三区香蕉 | 欧美α欧美αv大片| 欧美性猛交xxxx黑人交| 日本精品视频一区二区| 成人av高清在线| 成人午夜精品在线| 成人蜜臀av电影| 成人动漫精品一区二区| 国产91精品一区二区| 国产精品91一区二区| 国产精品影视在线观看| 国产一区二区0| 国产一级精品在线| 国产精品系列在线观看| 国产成人在线视频网站| 国产老妇另类xxxxx| 国产iv一区二区三区| 国产成人午夜精品5599| 国产成人啪免费观看软件| 懂色av中文字幕一区二区三区| 成人一级片在线观看| av午夜精品一区二区三区| 99久久婷婷国产综合精品| 91视频在线观看| 欧美精品在线视频| 欧美大肚乱孕交hd孕妇| 久久免费精品国产久精品久久久久| 久久综合五月天婷婷伊人| 久久精品欧美日韩| 综合久久给合久久狠狠狠97色| 夜夜揉揉日日人人青青一国产精品| 亚洲va欧美va人人爽| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久99精品久久久久| 成人综合婷婷国产精品久久蜜臀| 99riav久久精品riav| 欧美日韩视频在线第一区 | 色天天综合色天天久久| 欧美区视频在线观看| 精品国产麻豆免费人成网站| 中文字幕亚洲视频| 日韩国产一二三区| 成人视屏免费看| 777精品伊人久久久久大香线蕉| 亚洲精品一区在线观看| 亚洲欧美国产三级| 麻豆成人久久精品二区三区小说| 成人免费高清视频在线观看| 欧美影院一区二区三区| 久久久久久一二三区| 一区二区三区日韩在线观看| 久久成人18免费观看| 91首页免费视频| 欧美xxxx在线观看| 亚洲另类春色校园小说| 国产精品综合在线视频| 欧美色中文字幕| 国产情人综合久久777777| 亚洲国产裸拍裸体视频在线观看乱了| 久久精品国产网站| 在线一区二区三区四区五区| 欧美精品一区二区久久婷婷| 亚洲免费av在线| 国产精品一区二区在线看| 69久久99精品久久久久婷婷| 成人欧美一区二区三区1314| 久久精品72免费观看| 欧美在线影院一区二区| 国产丝袜在线精品| 蜜桃视频在线观看一区二区| 91传媒视频在线播放| 国产精品萝li| 国产一区二区三区在线观看免费| 欧美日韩国产另类一区| 自拍偷拍国产亚洲| 成人av片在线观看| 欧美国产在线观看| 久久成人免费日本黄色| 欧美日韩精品是欧美日韩精品| 中文字幕电影一区| 国产麻豆欧美日韩一区| 日韩精品一区二区在线| 舔着乳尖日韩一区| 在线中文字幕一区| 亚洲蜜臀av乱码久久精品蜜桃| 粗大黑人巨茎大战欧美成人| 国产午夜精品一区二区三区四区| 精品综合免费视频观看| 欧美mv和日韩mv国产网站| 欧美aaaaaa午夜精品| 日韩三级在线免费观看|