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

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

?? mftrafficbutton.cpp

?? 一個簡易的流量監控程式
?? 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一区二区三区免费野_久草精品视频
国产成人精品一区二区三区网站观看| 色婷婷国产精品久久包臀| 日韩成人一级片| 亚洲一区二区欧美激情| 一区二区三区视频在线看| 亚洲日本免费电影| 亚洲人吸女人奶水| 一区二区三区四区在线免费观看| 亚洲日本在线视频观看| 成人欧美一区二区三区小说| 中文字幕制服丝袜一区二区三区| 国产精品成人免费| 亚洲欧美日韩电影| 亚洲自拍偷拍网站| 同产精品九九九| 老汉av免费一区二区三区| 久久疯狂做爰流白浆xx| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕中文字幕一区| 亚洲视频一区二区在线| 夜夜精品视频一区二区| 婷婷综合在线观看| 国产尤物一区二区在线| av中文字幕亚洲| 欧美视频精品在线观看| 日韩一区二区高清| 久久久久久一二三区| 国产精品情趣视频| 亚洲制服丝袜av| 美女任你摸久久| 成人在线视频首页| 欧美亚洲禁片免费| 欧美成人性福生活免费看| 亚洲国产精品99久久久久久久久 | 一区二区视频在线| 日韩成人免费看| 国产九九视频一区二区三区| 91香蕉国产在线观看软件| 欧美日韩免费不卡视频一区二区三区| 日韩欧美亚洲另类制服综合在线| 国产日韩欧美麻豆| 一区二区视频免费在线观看| 免费成人小视频| jlzzjlzz亚洲日本少妇| 欧美日韩久久一区二区| 久久只精品国产| 一区二区三区蜜桃| 久久精品国产精品青草| 97精品超碰一区二区三区| 欧美丰满一区二区免费视频| 中文字幕欧美区| 三级久久三级久久久| 成人激情动漫在线观看| 亚洲第一二三四区| 欧美日韩精品一区二区三区 | 国产嫩草影院久久久久| 亚洲一区免费在线观看| 国内精品视频一区二区三区八戒 | 欧美日韩一本到| 久久久久久久久久美女| 亚洲免费在线观看视频| 激情都市一区二区| 欧美色欧美亚洲另类二区| 久久无码av三级| 偷拍一区二区三区四区| 成人动漫在线一区| 日韩免费在线观看| 一区二区三区四区中文字幕| 国产成人综合网| 日韩一区二区在线播放| 亚洲自拍偷拍九九九| 成人美女视频在线看| 亚洲成人av一区| 成人黄色777网| 欧美xxxx老人做受| av电影天堂一区二区在线| 欧美在线免费观看视频| 国产欧美一区二区三区在线老狼 | 日本丶国产丶欧美色综合| 久久婷婷久久一区二区三区| 视频精品一区二区| 在线免费观看日本欧美| 中文在线一区二区| 国内精品视频一区二区三区八戒| 欧美日韩一区不卡| 亚洲黄一区二区三区| 成人sese在线| 久久久久久久网| 久久se这里有精品| 日韩一区二区免费视频| 亚洲成人综合在线| 色av成人天堂桃色av| 国产精品久久三区| 国产成人免费高清| 久久精品人人做人人爽人人 | 欧美一区二区三区视频在线观看| 亚洲午夜免费电影| 在线视频一区二区三| 亚洲欧美日韩综合aⅴ视频| 成人美女在线视频| 国产精品天天看| 粉嫩一区二区三区性色av| 久久夜色精品一区| 国产精品一区二区免费不卡| 久久夜色精品国产噜噜av| 国产主播一区二区| 久久视频一区二区| 国产成人免费高清| 中文无字幕一区二区三区| 成人av网站免费| 成人免费一区二区三区视频| 91色porny蝌蚪| 亚洲一区二区三区四区中文字幕| 色婷婷综合久久久| 亚洲成人免费视频| 欧美肥妇毛茸茸| 麻豆精品久久精品色综合| 亚洲精品在线一区二区| 国产91在线|亚洲| 《视频一区视频二区| 欧洲一区二区av| 日韩成人精品在线| 精品欧美黑人一区二区三区| 国产一区二区三区免费看| 久久五月婷婷丁香社区| 美女尤物国产一区| 欧美精品一区二区三区在线播放| 欧美老年两性高潮| 久久精品国产在热久久| 久久综合久色欧美综合狠狠| 国产福利一区二区三区在线视频| 国产精品国产三级国产三级人妇 | 无码av中文一区二区三区桃花岛| 337p亚洲精品色噜噜噜| 精品一区二区影视| 欧美激情在线看| 在线欧美小视频| 麻豆国产欧美日韩综合精品二区| 欧美精品一区二区三区久久久| 国产成人av一区二区三区在线 | 久久99久久精品| 国产精品乱码一区二三区小蝌蚪| 色94色欧美sute亚洲线路二| 日日摸夜夜添夜夜添精品视频| 26uuu国产日韩综合| 91伊人久久大香线蕉| 日韩国产高清在线| 国产三级精品三级在线专区| 三级欧美韩日大片在线看| 国产91丝袜在线观看| 亚洲女同女同女同女同女同69| 欧美伊人久久大香线蕉综合69| 久久精品国产免费| 亚洲猫色日本管| 欧美刺激午夜性久久久久久久| 不卡av在线网| 男女男精品网站| 亚洲女人小视频在线观看| 香蕉加勒比综合久久| 国产亚洲精品中文字幕| 在线观看免费视频综合| 国产一区二区导航在线播放| 亚洲综合一区二区| 久久久久久99久久久精品网站| 欧美综合色免费| 福利一区福利二区| 秋霞影院一区二区| 亚洲精品视频免费看| 久久久亚洲综合| 欧美日韩一区成人| 99久久国产免费看| 韩国成人福利片在线播放| 亚洲国产综合色| 中文字幕中文字幕一区二区| 日韩欧美激情在线| 欧美日韩在线一区二区| 99免费精品在线| 国产乱码精品一品二品| 天堂蜜桃91精品| 亚洲最快最全在线视频| 国产精品理论片| 久久久久久麻豆| 欧美哺乳videos| 欧美精品vⅰdeose4hd| 色域天天综合网| 成人av影院在线| 国产成人免费在线观看不卡| 乱中年女人伦av一区二区| 亚洲v中文字幕| 洋洋av久久久久久久一区| 18成人在线观看| 国产精品麻豆久久久| 久久九九影视网| 久久综合色之久久综合| 日韩精品一区二区三区三区免费| 欧美日韩精品一区二区在线播放| 91福利在线导航| 91福利资源站| 色成人在线视频| 欧美综合天天夜夜久久|