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

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

?? guieditview.cpp

?? 該文件包含有C8051單片機中實現UART波特率自檢的功能
?? CPP
字號:
//-----------------------------------------------------------------------//
// This is a part of the GuiLib MFC Extention.							 //	
// Modified  :  Francisco Campos										 //
// (C) 2002 Francisco Campos <www.beyondata.com> All rights reserved     //
// This code is provided "as is", with absolutely no warranty expressed  //
// or implied. Any use is at your own risk.								 //		
// You must obtain the author's consent before you can include this code //
// in a software library.												 //
// If the source code in  this file is used in any application			 //
// then acknowledgement must be made to the author of this program		 //	
// fcampos@tutopia.com													 //
//-----------------------------------------------------------------------//

// Copyright (C) 1998 by Juraj Rojko jrojko@twist.cz
// All rights reserved
//


#include "stdafx.h"
#include "GuiEditView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CGuiEditView

IMPLEMENT_DYNCREATE(CGuiEditView, CRichEditView)

BEGIN_MESSAGE_MAP(CGuiEditView, CRichEditView)
	//{{AFX_MSG_MAP(CGuiEditView)
	ON_CONTROL_REFLECT(EN_CHANGE, OnChange)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CRichEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRichEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRichEditView::OnFilePrintPreview)

	ON_NOTIFY_REFLECT(EN_PROTECTED, OnProtected)
	ON_MESSAGE(WM_SETTEXT, OnSetText)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGuiEditView construction/destruction

CGuiEditView::CGuiEditView()
{
	m_chComment = 1;
	m_bCaseSensitive = FALSE;
	m_bChangeCase = TRUE;

	SetStringQuotes(_T("\""));

	SetKeywordColor(RGB(0,0,255), FALSE);
	SetConstantColor(RGB(0,0,0), TRUE);
	SetCommentColor(RGB(0,128,0), FALSE);
	SetNumberColor(RGB(255,0,255), FALSE);
	SetStringColor(RGB(255,0,255), FALSE);

	m_bInForcedChange = FALSE;
	m_changeType = ctUndo;
	m_crOldSel.cpMin = m_crOldSel.cpMax = 0;
}

CGuiEditView::~CGuiEditView()
{
}

BOOL CGuiEditView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CRichEditView::PreCreateWindow(cs);
}


void CGuiEditView::OnInitialUpdate()
{
	// Set the printing margins (720 twips = 1/2 inch).
	SetMargins(CRect(720, 720, 720, 720));

	CRichEditView::OnInitialUpdate();
}

/////////////////////////////////////////////////////////////////////////////
// CGuiEditView printing

BOOL CGuiEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}


/////////////////////////////////////////////////////////////////////////////
// CGuiEditView diagnostics

#ifdef _DEBUG
void CGuiEditView::AssertValid() const
{
	CRichEditView::AssertValid();
}

void CGuiEditView::Dump(CDumpContext& dc) const
{
	CRichEditView::Dump(dc);
}
/*
CVBScriptEditorDoc* CGuiEditView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVBScriptEditorDoc)));
	return (CVBScriptEditorDoc*)m_pDocument;
}
*/
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CGuiEditView message handlers
void CGuiEditView::Initialize() 
{
	PARAFORMAT2 pf;
	pf.cbSize = sizeof(PARAFORMAT);
	pf.dwMask = PFM_TABSTOPS ;
	pf.cTabCount = MAX_TAB_STOPS;
	for( int itab = 0 ; itab < pf.cTabCount  ; itab++ )
		pf.rgxTabs[itab] = (itab + 1) * 1440/5 ;

	SetParaFormat( pf );

	CHARFORMAT cfDefault;
	cfDefault.cbSize = sizeof(cfDefault);
	cfDefault.dwEffects = CFE_PROTECTED; 
	cfDefault.dwMask = CFM_BOLD | CFM_FACE | CFM_SIZE | CFM_CHARSET | CFM_PROTECTED;
	cfDefault.yHeight = 200;
	cfDefault.bCharSet = 0xEE; 
	strcpy(cfDefault.szFaceName, _T("Courier New")); 

	GetRichEditCtrl().SetDefaultCharFormat(cfDefault);
	
	GetRichEditCtrl().SetEventMask(ENM_CHANGE | ENM_SELCHANGE | ENM_PROTECTED);
}

void CGuiEditView::SetSLComment(TCHAR chComment, TCHAR chComment2)
{
	m_chComment = chComment;
	m_chComment2 = chComment2;
}

void CGuiEditView::SetSLComment(LPCTSTR lpszComment)
{
	m_strComment = lpszComment;
}

void CGuiEditView::AddKeywords(LPCTSTR lpszKwd)
{
	m_strKeywords = m_strKeywords + lpszKwd;
	m_strKeywordsLower = m_strKeywords;
	if (!m_bCaseSensitive)
		m_strKeywordsLower.MakeLower();
}

void CGuiEditView::ClearKeywords()
{
	m_strKeywords.Empty();
	m_strKeywordsLower.Empty();
}							  

void CGuiEditView::AddConstants(LPCTSTR lpszConst)
{
	m_strConstants = m_strConstants + lpszConst;
	m_strConstantsLower = m_strConstants;
	if (!m_bCaseSensitive)
		m_strConstantsLower.MakeLower();
}

void CGuiEditView::ClearConstants()
{
	m_strConstants.Empty();
	m_strConstantsLower.Empty();
}							  

void CGuiEditView::SetCaseSensitive(BOOL bSensitive)
{
	m_bCaseSensitive = bSensitive;
}

void CGuiEditView::SetChangeCase(BOOL bChange)
{
	m_bChangeCase = bChange;
}

void CGuiEditView::SetStringQuotes(LPCTSTR lpszStrQ)
{
	m_strStringQuotes = lpszStrQ;
}

void CGuiEditView::SetKeywordColor(COLORREF clr, BOOL bBold)
{
	m_icKeyword.clrColor = clr;
	m_icKeyword.bBold = bBold;
}

void CGuiEditView::SetConstantColor(COLORREF clr, BOOL bBold)
{
	m_icConstant.clrColor = clr;
	m_icConstant.bBold = bBold;
}

void CGuiEditView::SetCommentColor(COLORREF clr, BOOL bBold)
{
	m_icComment.clrColor = clr;
	m_icComment.bBold = bBold;
}

void CGuiEditView::SetNumberColor(COLORREF clr, BOOL bBold)
{
	m_icNumber.clrColor = clr;
	m_icNumber.bBold = bBold;
}

void CGuiEditView::SetStringColor(COLORREF clr, BOOL bBold)
{
	m_icString.clrColor = clr;
	m_icString.bBold = bBold;
}
int CGuiEditView::IsKeyword(LPCTSTR lpszSymbol)
{
	CString strSymbol; strSymbol.Format(" %s ", lpszSymbol);
	if (!m_bCaseSensitive) 
		strSymbol.MakeLower();
				
	return m_strKeywordsLower.Find(strSymbol);
}

int CGuiEditView::IsConstant(LPCTSTR lpszSymbol)
{
	CString strSymbol; strSymbol.Format(" %s ", lpszSymbol);
	if (!m_bCaseSensitive) 
		strSymbol.MakeLower();
				
	return m_strConstantsLower.Find(strSymbol);
}

BOOL CGuiEditView::IsStringQuote(TCHAR ch)
{
	return (m_strStringQuotes.Find(ch) >= 0);
}


void CGuiEditView::SetFormatRange(int nStart, int nEnd, BOOL bBold, COLORREF clr)
{
	if (nStart >= nEnd)
		return;

	GetRichEditCtrl().SetSel(nStart, nEnd);

	DWORD dwEffects = bBold?CFE_BOLD:0;

	CHARFORMAT cfm;
	cfm.cbSize = sizeof(cfm);
    GetRichEditCtrl().GetSelectionCharFormat(cfm);
	
	if ((cfm.dwMask & CFM_COLOR)  && cfm.crTextColor == clr && 
		(cfm.dwMask & CFM_BOLD) && (cfm.dwEffects & CFE_BOLD) == dwEffects)
		return;

	cfm.dwEffects = dwEffects;
	cfm.crTextColor = clr;
	cfm.dwMask = CFM_BOLD | CFM_COLOR;

	GetRichEditCtrl().SetSelectionCharFormat(cfm);
}

void CGuiEditView::ChangeCase(int nStart, int nEnd, LPCTSTR lpsz)
{
	ASSERT((nEnd - nStart) == (int)_tcslen(lpsz));

	if (!m_bCaseSensitive && m_bChangeCase) {
		GetRichEditCtrl().SetSel(nStart, nEnd);
		GetRichEditCtrl().ReplaceSel(lpsz);
	}
}

void CGuiEditView::FormatTextRange(int nStart, int nEnd)
{
	if (nStart >= nEnd)
		return;

	m_bInForcedChange = TRUE;

	CHARRANGE crOldSel;

	GetRichEditCtrl().GetSel(crOldSel);
	LockWindowUpdate();
	GetRichEditCtrl().HideSelection(TRUE, FALSE);

	TCHAR *pBuffer = NULL;
	try {
		GetRichEditCtrl().SetSel(nStart, nEnd);
		pBuffer = new TCHAR[nEnd - nStart + 1];
		long nLen = GetRichEditCtrl().GetSelText(pBuffer);

		ASSERT(nLen <= nEnd - nStart);

		pBuffer[nLen] = 0;

		TCHAR *pStart, *pPtr;
		pStart = pPtr = pBuffer;

		TCHAR* pSymbolStart = NULL;
		SymbolColor ic;

		while (*pPtr != 0) {
			TCHAR ch = *pPtr;

			if (ch == m_chComment && (m_chComment2 == 0 || pPtr[1] == m_chComment2)) {
				pSymbolStart = pPtr;
				do {
					ch = *(++pPtr);
				} while (ch != 0 && ch != '\r');
				ic = m_icComment;
			} else if (IsStringQuote(ch)) { // Process strings
				pSymbolStart = pPtr;
				TCHAR ch1 = ch;
				do {
					ch = *(++pPtr);
				} while (ch != 0 && ch != ch1 && ch != '\r');
				if (ch == ch1) pPtr++;
				ic = m_icString;
			} else if (_istdigit(ch)) { // Process numbers
				pSymbolStart = pPtr;
				_tcstod(pSymbolStart, &pPtr);
				ic = m_icNumber;
			} else if (_istalpha(ch) || ch == '_') { // Process keywords
				pSymbolStart = pPtr;
				do {
					ch = *(++pPtr);
				} while (_istalnum(ch) || ch == '_');
				*pPtr = 0;
				int nPos = IsKeyword(pSymbolStart);
				if (nPos >= 0) {
					ChangeCase(nStart + pSymbolStart - pBuffer, nStart + pPtr - pBuffer, 
								m_strKeywords.Mid(nPos+1, pPtr - pSymbolStart));
					if (_tcsicmp(m_strComment, pSymbolStart) == 0) {
						*pPtr = ch;
						*pSymbolStart = m_chComment;
						if (pSymbolStart[1] != 0 && m_chComment2 != 0)
							pSymbolStart[1] = m_chComment2;
						pPtr = pSymbolStart;
						pSymbolStart = NULL;
						continue;
					}
					ic = m_icKeyword;
				} else {
					nPos = IsConstant(pSymbolStart);
					if (nPos >= 0) {
							ChangeCase(nStart + pSymbolStart - pBuffer, nStart + pPtr - pBuffer, 
										m_strConstants.Mid(nPos+1, pPtr - pSymbolStart));
						ic = m_icConstant;
					} else {
						pSymbolStart = NULL;
					}
				}
				*pPtr = ch;
			} else {
				pPtr++;
			}

			if (pSymbolStart != NULL) {
				ASSERT(pSymbolStart < pPtr);
				SetFormatRange(nStart + pStart - pBuffer, nStart + pSymbolStart - pBuffer, FALSE, RGB(0,0,0));
				SetFormatRange(nStart + pSymbolStart - pBuffer, nStart + pPtr - pBuffer, ic.bBold, ic.clrColor);
				pStart = pPtr;
				pSymbolStart = 0;
			} else if (*pPtr == 0)
				SetFormatRange(nStart + pStart - pBuffer, nStart + pPtr - pBuffer, FALSE, RGB(0,0,0));
		}

	} catch(...){}

	delete [] pBuffer;

	GetRichEditCtrl().SetSel(crOldSel);
	GetRichEditCtrl().HideSelection(FALSE, FALSE);
	UnlockWindowUpdate();

	m_bInForcedChange = FALSE;
}

void CGuiEditView::FormatTextLines(int nLineStart, int nLineEnd)
{
	long nStart = GetRichEditCtrl().LineIndex(GetRichEditCtrl().LineFromChar(nLineStart));
	long nEnd = GetRichEditCtrl().LineIndex(GetRichEditCtrl().LineFromChar(nLineEnd));
	nEnd += GetRichEditCtrl().LineLength(nLineEnd);

	FormatTextRange(nStart, nEnd);
}


void CGuiEditView::FormatAll()
{
	FormatTextRange(0, GetTextLength());
}

LRESULT CGuiEditView::OnSetText(WPARAM wParam, LPARAM lParam)
{
	LRESULT res = Default();
	//FormatAll();
	return res;	
}

void CGuiEditView::OnChange() 
{
	if (m_bInForcedChange)
		return;

	CHARRANGE crCurSel; 
	GetRichEditCtrl().GetSel(crCurSel);

	if (m_changeType == ctMove && crCurSel.cpMin == crCurSel.cpMax) {
		// cut was canceled, so this is paste operation
		m_changeType = ctPaste;
	}

	switch(m_changeType) {
	case ctReplSel:// old=(x,y) -> cur=(x+len,x+len)
	case ctPaste:  // old=(x,y) -> cur=(x+len,x+len)
		FormatTextLines(m_crOldSel.cpMin, crCurSel.cpMax);
		break;
	case ctDelete: // old=(x,y) -> cur=(x,x)
	case ctBack:   // old=(x,y) -> cur=(x,x), newline del => old=(x,x+1) -> cur=(x-1,x-1)
	case ctCut:    // old=(x,y) -> cur=(x,x)
		FormatTextLines(crCurSel.cpMin, crCurSel.cpMax);
		break;
	case ctUndo:   // old=(?,?) -> cur=(x,y)
		FormatTextLines(crCurSel.cpMin, crCurSel.cpMax);
		break;
	case ctMove:   // old=(x,x+len) -> cur=(y-len,y) | cur=(y,y+len)
		FormatTextLines(crCurSel.cpMin, crCurSel.cpMax);
		if (crCurSel.cpMin > m_crOldSel.cpMin) // move after
			FormatTextLines(m_crOldSel.cpMin, m_crOldSel.cpMin);
		else // move before
			FormatTextLines(m_crOldSel.cpMax, m_crOldSel.cpMax);
		break;
	default:
		FormatAll();
		break;
	}

	//undo action does not call OnProtected, so make it default
	m_changeType = ctUndo;
}

void CGuiEditView::OnProtected(NMHDR* pNMHDR, LRESULT* pResult)
{
	ENPROTECTED* pEP = (ENPROTECTED*)pNMHDR;

	// determine type of change will occur

	switch (pEP->msg) {
	case WM_KEYDOWN:
		switch (pEP->wParam) {
		case VK_DELETE:
			m_changeType = ctDelete;
			break;
		case VK_BACK:
			m_changeType = ctBack;
			break;
		default:
			m_changeType = ctUnknown;
			break;
		}
		break;
	case EM_REPLACESEL:
	case WM_CHAR:
		m_changeType = ctReplSel;
		break;
	case WM_PASTE:
		m_changeType = (m_changeType == ctCut)?ctMove:ctPaste;
		break;
	case WM_CUT:
		m_changeType = ctCut;
		break;
	case EM_SETCHARFORMAT:
		// Ignore this
		break;
	default:
		m_changeType = ctUnknown;
		break;
	};

	if (pEP->msg != EM_SETCHARFORMAT && m_changeType != ctMove)
		m_crOldSel = pEP->chrg;

	*pResult = FALSE;
}

static LPCTSTR szKeywords = " Call Const Dim Do Loop Erase Exit For To Step Next "
"Each Function If Then Else On Error Resume Option Explicit Private Public Randomize "
"ReDim Rem Select Case Set Sub End While Wend "
"And Eqv Imp Is Mod Not Or Xor ";

static LPCTSTR szConstants = " Empty False True Nothing Null "
"vbBlack vbRed vbGreen vbYellow vbBlue vbMagenta vbCyan vbWhite "
"vbBinaryCompare vbTextCompare vbDatabaseCompare "
"vbGeneralDate vbLongDate vbShortDate vbLongTime vbShortTime "
"vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday "
"vbFirstJan1 vbFirstFourDays vbFirstFullWeek vbUseSystem vbUseSystemDayOfWeek "
"vbObjectError vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo "
"vbRetryCancel vbCritical vbQuestion vbExclamation vbInformation "
"vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 "
"vbApplicationModal vbSystemModal "
"vbCr vbCrLf vbFormFeed vbLf vbNewLine vbNullChar vbNullString vbTab vbVerticalTab "
"vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString "
"vbObject vbError vbBoolean vbVariant vbDataObject vbDecimal vbByte vbArray ";

int CGuiEditView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CRichEditView::OnCreate(lpCreateStruct) == -1)
		return -1;

	Initialize();

	SetCaseSensitive(FALSE);
	SetStringQuotes(_T("\""));
	SetSLComment(_T('\''));
	SetSLComment(_T("rem"));
	AddKeywords(szKeywords);
	AddConstants(szConstants);
	
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久综合久久| 99国产欧美另类久久久精品| 欧美日韩你懂的| 精品国产一区二区三区不卡| 色婷婷av久久久久久久| www日韩大片| 日日噜噜夜夜狠狠视频欧美人| 国产成人av一区二区| 欧美主播一区二区三区美女| 日韩一区二区电影| 亚洲一级电影视频| 91美女视频网站| 国产精品国产三级国产有无不卡| 伦理电影国产精品| 欧美在线制服丝袜| 中文字幕字幕中文在线中不卡视频| 韩国理伦片一区二区三区在线播放 | 中文字幕精品综合| 精品午夜久久福利影院| 欧美一区二区播放| 亚洲va韩国va欧美va| 色综合天天综合网天天狠天天| 久久九九全国免费| 激情国产一区二区| 久久中文字幕电影| 麻豆91在线看| 日韩免费福利电影在线观看| 午夜精品福利一区二区三区蜜桃| 日本精品一级二级| 亚洲天堂精品在线观看| 99精品一区二区| 国产精品卡一卡二| 成人av电影在线网| **欧美大码日韩| 97久久人人超碰| 亚洲色图另类专区| 色婷婷久久99综合精品jk白丝| 国产精品人人做人人爽人人添| 成人永久aaa| 亚洲欧洲日本在线| 欧美性感一类影片在线播放| 亚洲一区二区三区四区五区中文| 在线精品视频免费播放| 亚洲午夜精品网| 欧美一区二区三区性视频| 捆绑变态av一区二区三区| 中文字幕在线播放不卡一区| 日韩理论电影院| 免费成人结看片| 亚洲丰满少妇videoshd| 亚洲一区二区三区四区在线| 激情综合五月婷婷| 成人在线综合网站| 色综合网站在线| 日韩午夜av一区| 久久综合九色综合97婷婷女人 | 亚洲女子a中天字幕| 国产白丝网站精品污在线入口| 中文字幕免费不卡| 91麻豆免费看| 日精品一区二区| 日本一区二区免费在线| 欧美性生活一区| 国产精品亚洲а∨天堂免在线| 国产精品成人午夜| 欧美一区二区三区免费在线看| 国产精品一区二区三区网站| 一区二区三区四区在线| 欧美tickling挠脚心丨vk| 99国产精品一区| 日韩激情一区二区| 1024成人网| 欧美电影免费观看完整版| 成人性视频免费网站| 午夜精品免费在线| 国产精品久久看| 欧美成人在线直播| 91麻豆国产福利在线观看| 日本不卡高清视频| 亚洲人成在线观看一区二区| 日韩精品一区二区三区视频| 色综合婷婷久久| 粉嫩av亚洲一区二区图片| 日韩国产欧美视频| 一区二区免费看| 中文字幕一区免费在线观看| 欧美成人精品1314www| 91丨九色丨黑人外教| 国产一区二区三区黄视频 | 欧美性生活大片视频| 国产精品正在播放| 亚洲va韩国va欧美va| 国产精品少妇自拍| 精品国产成人系列| 884aa四虎影成人精品一区| 色噜噜偷拍精品综合在线| 国产精品一级二级三级| 人人精品人人爱| 亚洲日本韩国一区| 久久品道一品道久久精品| 91蜜桃免费观看视频| 国产精品一二三| 亚洲精品自拍动漫在线| 欧美理论在线播放| 另类小说一区二区三区| 精品三级在线看| heyzo一本久久综合| 天天做天天摸天天爽国产一区| 欧美精品vⅰdeose4hd| 久国产精品韩国三级视频| 亚洲精品日韩专区silk| 91精品国产欧美一区二区18 | 亚洲欧美成人一区二区三区| 国产精品三级久久久久三级| 久久蜜桃av一区精品变态类天堂| 精品三级av在线| 久久久国产精品麻豆 | 91精品国产综合久久久久久漫画 | 成人国产电影网| 国产成人a级片| 成人av网站大全| 成人在线视频一区二区| 99精品视频中文字幕| 91视频在线观看| 日本久久一区二区三区| 欧美日韩色综合| 91精品国产综合久久精品图片 | 精品婷婷伊人一区三区三| 欧美日韩在线播放一区| 91.com视频| 久久综合九色综合欧美就去吻| 欧美经典一区二区| 亚洲精品视频自拍| 视频在线观看一区| 国产一区二区三区香蕉| 成人a区在线观看| 在线视频亚洲一区| 欧美一区永久视频免费观看| 精品日韩一区二区| 国产精品久久久久aaaa樱花 | 国产视频一区在线观看| 国产精品传媒入口麻豆| 亚洲一区二区三区三| 蜜桃一区二区三区在线| 高清av一区二区| 欧美人与性动xxxx| 欧美精彩视频一区二区三区| 亚洲一区欧美一区| 国产一区二区女| 欧美三级视频在线| 久久精品欧美一区二区三区麻豆| 综合自拍亚洲综合图不卡区| 日韩在线卡一卡二| 高清久久久久久| 91精品国产手机| 1000部国产精品成人观看| 午夜精品久久久| 99re视频精品| 久久久亚洲高清| 日本亚洲最大的色成网站www| 国产一区日韩二区欧美三区| 欧美日韩一区二区三区不卡| 久久精品欧美一区二区三区麻豆| 亚洲一区二区中文在线| 国产乱码字幕精品高清av| 欧美偷拍一区二区| 国产精品免费观看视频| 欧美aaaaa成人免费观看视频| 91色九色蝌蚪| 国产精品热久久久久夜色精品三区| 丝袜a∨在线一区二区三区不卡| 成人午夜在线视频| 精品国产伦理网| 日韩国产精品91| 欧美三区在线视频| 玉足女爽爽91| 99精品视频在线观看| 久久久99精品久久| 久久国产乱子精品免费女| 欧美三区在线观看| 亚洲制服丝袜在线| 99久久99久久精品免费观看| 久久精品亚洲乱码伦伦中文 | 99久久精品一区二区| 精品精品国产高清一毛片一天堂| 亚洲成人自拍网| 欧美亚洲动漫另类| 视频在线观看一区| 精品黑人一区二区三区久久 | 99精品国产视频| 国产精品久久久久久久岛一牛影视 | 丁香六月久久综合狠狠色| 欧美一卡2卡3卡4卡| 精品亚洲成av人在线观看| 精品久久人人做人人爰| 国产盗摄一区二区| 一区二区三区**美女毛片| 色成年激情久久综合| 国产精品一二三四| 精品久久久久久久久久久久久久久|