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

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

?? lefttreeview.cpp

?? vc++的技巧查找方式源代碼。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

	if(bWriteDB)
	{
		m_ADO.Update();
	}
}

int CLeftTreeView::GetIndentLevel(HTREEITEM hItem)
{
	int nIndent = 0;
	
	while((hItem = m_pTreeSkill->GetParentItem(hItem)) != NULL)
	{
		nIndent++;
	}

	return nIndent;
}

HTREEITEM CLeftTreeView::GetNextItem(HTREEITEM hItem)
{
	HTREEITEM hTemp;
	
	if(m_pTreeSkill->ItemHasChildren(hItem) )
	{//return first child
		return m_pTreeSkill->GetChildItem(hItem);		
	}
	else
	{
		// return next sibling item
		// go up the tree to find a parent's sibling if needed.
		while((hTemp = m_pTreeSkill->GetNextSiblingItem(hItem)) == NULL)
		{
			if((hItem = m_pTreeSkill->GetParentItem(hItem)) == NULL)
			{
				return NULL;
			}
		}
	}

	return hTemp;
}

int CLeftTreeView::GetItemTypeByTag(const int nTag)
{
	int nType=-1;
	POSITION pos=NULL;

	if(m_TreeInfoList.GetCount() < 1)
	{
		return -1;
	}

	for(pos=m_TreeInfoList.GetHeadPosition(); NULL!=pos;)
	{
		if(m_TreeInfoList.GetAt(pos).nTag == nTag)
		{
			nType = m_TreeInfoList.GetAt(pos).nType;
			break;
		}

		m_TreeInfoList.GetNext(pos);
	}

	return nType;
}

void CLeftTreeView::OnUpdateMenuAddchildarticle(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(m_bEnableAddItem);
}

void CLeftTreeView::OnUpdateMenuAddchildnode(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(m_bEnableAddItem);
}

POSITION CLeftTreeView::GetFreeItemTag(int &nTag)
{
	int i,j;
	int nCount;
	int nMaxTag=0;
	POSITION pos=NULL;
	BOOL bFindFreeTag=FALSE;
	BOOL bFind=FALSE;
	BOOL bAddMaxTag=TRUE;

	nCount = m_TreeInfoList.GetCount();

	if(nCount < 1)
	{
		nTag = 1;
		return NULL;
	}

	for(pos=m_TreeInfoList.GetHeadPosition(); NULL!=pos;)
	{
		if(m_TreeInfoList.GetAt(pos).nTag > nMaxTag)
		{
			nMaxTag = m_TreeInfoList.GetAt(pos).nTag;
		}
		
		m_TreeInfoList.GetNext(pos);
	}

	for(pos=m_TreeInfoList.GetHeadPosition(); NULL!=pos;)
	{
		if(m_TreeInfoList.GetAt(pos).nDeleted == 1)
		{
			nTag = m_TreeInfoList.GetAt(pos).nTag;
			bFindFreeTag = TRUE;

			break;
		}
		
		m_TreeInfoList.GetNext(pos);
	}

	if(!bFindFreeTag)
	{
		for(i=1; i<nMaxTag; i++)
		{
			j=0;
			bFind = FALSE;
			for(pos=m_TreeInfoList.GetHeadPosition(); NULL!=pos;)
			{
				j++;

				if(m_TreeInfoList.GetAt(pos).nTag == i)
				{
					bFind = TRUE;
					break;
				}
				
				m_TreeInfoList.GetNext(pos);
			}

			if((j == nCount) && !bFind)
			{
				nTag = i;
				bAddMaxTag = FALSE;
				break;
			}
		}

		if(bAddMaxTag)
		{
			nTag = nMaxTag + 1;
		}

		pos = NULL;
	}

	return pos;
}

void CLeftTreeView::SetDeletedItemTagFlag()
{
	POSITION pos1=NULL;
	POSITION pos2=NULL;
	CString szSQL("");
	CString szTemp(""),szIn("");
	
	if((m_TreeInfoList.GetCount() < 1) 
		|| (m_SelectedItemTagList.GetCount() < 1))
	{
		return;
	}

	for(pos1=m_SelectedItemTagList.GetHeadPosition(); NULL!=pos1;)
	{
		for(pos2=m_TreeInfoList.GetHeadPosition(); NULL!=pos2;) 
		{
			int nTag=m_SelectedItemTagList.GetAt(pos1);
			if(nTag == m_TreeInfoList.GetAt(pos2).nTag)
			{
				szTemp.Format(_T("'%d'"), nTag);
				szIn += szTemp + ",";
				m_TreeInfoList.GetAt(pos2).nDeleted = 1;
				break;
			}

			m_TreeInfoList.GetNext(pos2);
		}

		m_SelectedItemTagList.GetNext(pos1);
	}

	if(!szIn.IsEmpty())
	{
		szTemp = szIn.Left(szIn.GetLength() - 1);
		szSQL.Format(_T("DELETE * FROM Article WHERE Tag IN (%s)"), szTemp);
		m_ADO.ExeSQL(szSQL, TRUE);
		szSQL.Format(_T("DELETE * FROM TreeNode WHERE Tag IN (%s)"), szTemp);
		m_ADO.ExeSQL(szSQL, TRUE);
	}
	
}

BOOL CLeftTreeView::ShowArticleByTreeItemTag(const int nTag)
{
	CString szSQL("");
	CString szValue("");
	
	
	szSQL.Format(_T("SELECT * FROM Article WHERE Tag='%d'"), nTag);
	m_ADO.ExeSQL(szSQL);
	
	if(m_ADO.GetRecordCount() > 0)
	{
		m_ADO.MoveFirst();
		m_ADO.GetFieldValue("Article", szValue);
	}

	CMainFrame *pMainFrame = (CMainFrame*)GetParent()->GetParent(); 
	CSkillBookView *pView = (CSkillBookView *)pMainFrame->m_wndSplitter.GetPane(0,1); 

	pView->GetRichEditCtrl().SetWindowText(szValue);

	return TRUE;
}

BOOL CLeftTreeView::SaveArticleByTreeItemTag(const int nTag)
{
	if(nTag == -1)
	{
		return FALSE;
	}

	CString szSQL("");
	CString szValue("");
	
	szSQL.Format(_T("SELECT * FROM Article WHERE Tag='%d'"), nTag);
	m_ADO.ExeSQL(szSQL);
	
	if(m_ADO.GetRecordCount() > 0)
	{
		m_ADO.MoveFirst();
	}
	else
	{
		m_ADO.AddNew();
	}

	CMainFrame *pMainFrame = (CMainFrame*)GetParent()->GetParent(); 
	CSkillBookView *pView = (CSkillBookView *)pMainFrame->m_wndSplitter.GetPane(0,1); 

	szValue.Format(_T("%d"), nTag);
	m_ADO.SetFieldValue("Tag", szValue);

	pView->GetRichEditCtrl().GetWindowText(szValue);
	m_ADO.SetFieldValue("Article", szValue);

	m_ADO.Update();

	return TRUE;
}

void CLeftTreeView::OnMenuAddrootnode() 
{
	// TODO: Add your command handler code here
	AddRootNode();
}

void CLeftTreeView::AddRootNode()
{
	int nTag=0;
	char szText[255];
	POSITION pos=NULL;
	TV_INSERTSTRUCT TCItem;//定義插入項數據結構
	HTREEITEM hParent=TVI_ROOT;

	sprintf(szText, "%s", "新增目錄");

	//設置父項句柄
	TCItem.hParent = hParent;
	//在最后增加
	TCItem.hInsertAfter = TVI_LAST;
	TCItem.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
	TCItem.item.pszText = szText;
	//索引號增加
	pos = GetFreeItemTag(nTag);
	TCItem.item.lParam = nTag;
	//正常圖標
	TCItem.item.iImage = 0;
	//選中時圖標
	TCItem.item.iSelectedImage = 1;
	//增加
	HTREEITEM hInsert = m_pTreeSkill->InsertItem(&TCItem);
	
	m_pTreeSkill->Expand(hParent, TVE_EXPAND);
	//修改增加的數據
	m_bCanEditLabel = TRUE;
	m_pTreeSkill->EditLabel(hInsert);

	TREEINFO treeinfo;

	treeinfo.nType = 0;
	treeinfo.nTag = int(TCItem.item.lParam);
	treeinfo.nDeleted = 0;

	if(NULL == pos)
	{
		m_TreeInfoList.AddTail(treeinfo);
	}
	else
	{
		m_TreeInfoList.SetAt(pos, treeinfo);
	}
}

void CLeftTreeView::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	*pResult = 0;
	//如果是無意拖曳,則放棄操作
	if((GetTickCount() - m_dwDragStart) < DRAG_DELAY)
	{
		return;
	}

	m_hItemDragS = pNMTreeView->itemNew.hItem;
	m_hItemDragD = NULL;

	//得到用于拖動時顯示的圖象列表
	m_pDragImage = m_pTreeSkill->CreateDragImage(m_hItemDragS);
	if(NULL == m_pDragImage)
	{
		return;
	}

	m_bDragging = TRUE;
	m_pDragImage->BeginDrag (0,CPoint(8,8));
	CPoint  pt = pNMTreeView->ptDrag;
	ClientToScreen(&pt);
	m_pDragImage->DragEnter(this, pt);  //"this"將拖曳動作限制在該窗口
	SetCapture();

	m_nScrollTimerID = SetTimer(2, 40, NULL);
}

void CLeftTreeView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	HTREEITEM  hItem;
	UINT       flags;

	//檢測鼠標敏感定時器是否存在,如果存在則刪除,刪除后再定時
	if(m_nHoverTimerID)
	{
		KillTimer( m_nHoverTimerID );
		m_nHoverTimerID = 0;
	}

	m_nHoverTimerID = SetTimer(1, 800, NULL);  //定時為 0.8 秒則自動展開
	m_HoverPoint = point;

	if(m_bDragging)
	{
		CPoint  pt = point;
		CImageList::DragMove(pt);

		//鼠標經過時高亮顯示
		CImageList::DragShowNolock(FALSE);  //避免鼠標經過時留下難看的痕跡
		if((hItem = m_pTreeSkill->HitTest(point,&flags)) != NULL)
		{
			m_pTreeSkill->SelectDropTarget(hItem);
			m_hItemDragD = hItem;
		}
		CImageList::DragShowNolock(TRUE);

		//當條目被拖曳到左邊緣時,將條目放在根下
		CRect  rect;

		GetClientRect( &rect );
		if( point.x < rect.left + 20 )
		{
			m_hItemDragD = NULL;
		}
	}

	CTreeView::OnMouseMove(nFlags, point);
}

void CLeftTreeView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CTreeView::OnLButtonUp(nFlags, point);

	if(m_bDragging)
	{
		m_bDragging = FALSE;
		CImageList::DragLeave(this);
		CImageList::EndDrag();
		ReleaseCapture();
		delete m_pDragImage;

		m_pTreeSkill->SelectDropTarget(NULL);
		
		if(m_hItemDragS == m_hItemDragD)
		{
			KillTimer(m_nScrollTimerID);
			return;
		}
		else
		{
			if(m_hItemDragD != NULL)
			{
				int nTag = m_pTreeSkill->GetItemData(m_hItemDragD);
				
				if(GetItemTypeByTag(nTag) == 1)
				{//拖放目標是文章
					KillTimer(m_nScrollTimerID);
					return;
				}
			}
		}

		m_pTreeSkill->Expand(m_hItemDragD,TVE_EXPAND);

		HTREEITEM  htiParent = m_hItemDragD;
		while((htiParent = m_pTreeSkill->GetParentItem(htiParent)) != NULL)
		{
			if(htiParent == m_hItemDragS)
			{
				HTREEITEM  htiNewTemp = CopyBranch(m_hItemDragS,NULL,TVI_LAST);
				HTREEITEM  htiNew = CopyBranch(htiNewTemp,m_hItemDragD,TVI_LAST);
				m_pTreeSkill->DeleteItem(htiNewTemp);
				m_pTreeSkill->SelectItem(htiNew);
				KillTimer(m_nScrollTimerID);
				return;
			}
		}

		HTREEITEM  htiNew = CopyBranch(m_hItemDragS, m_hItemDragD, TVI_LAST);
		m_pTreeSkill->DeleteItem(m_hItemDragS);
		m_pTreeSkill->SelectItem(htiNew);
		KillTimer(m_nScrollTimerID);
	}
}

//拷貝條目
HTREEITEM CLeftTreeView::CopyItem(HTREEITEM hItem, HTREEITEM htiNewParent, HTREEITEM htiAfter)
{
	TV_INSERTSTRUCT  tvstruct;
	HTREEITEM        hNewItem;
	CString          sText;

	//得到源條目的信息
	tvstruct.item.hItem = hItem;
	tvstruct.item.mask  = TVIF_CHILDREN|TVIF_HANDLE|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
	m_pTreeSkill->GetItem(&tvstruct.item);
	sText = m_pTreeSkill->GetItemText(hItem);
	tvstruct.item.cchTextMax = sText.GetLength();
	tvstruct.item.pszText    = sText.LockBuffer();

	//將條目插入到合適的位置
	tvstruct.hParent         = htiNewParent;
	tvstruct.hInsertAfter    = htiAfter;
	tvstruct.item.mask       = TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
	hNewItem = m_pTreeSkill->InsertItem(&tvstruct);
	sText.ReleaseBuffer();

	//限制拷貝條目數據和條目狀態
	m_pTreeSkill->SetItemData(hNewItem, m_pTreeSkill->GetItemData(hItem));
	m_pTreeSkill->SetItemState(hNewItem, m_pTreeSkill->GetItemState(hItem, TVIS_STATEIMAGEMASK), TVIS_STATEIMAGEMASK);

	return hNewItem;
}

//拷貝分支
HTREEITEM CLeftTreeView::CopyBranch(HTREEITEM htiBranch, HTREEITEM htiNewParent, HTREEITEM htiAfter)
{
	HTREEITEM  hChild;
	HTREEITEM  hNewItem = CopyItem(htiBranch,htiNewParent,htiAfter);
	hChild = m_pTreeSkill->GetChildItem(htiBranch);

	while(hChild != NULL)
	{
		CopyBranch(hChild,hNewItem,htiAfter);
		hChild = m_pTreeSkill->GetNextSiblingItem(hChild);
	}

	return  hNewItem;
}

void CLeftTreeView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	//鼠標敏感節點
	if(nIDEvent == m_nHoverTimerID)
	{
		KillTimer(m_nHoverTimerID);
		m_nHoverTimerID = 0;
		HTREEITEM  trItem = 0;
		UINT  uFlag = 0;
		trItem = m_pTreeSkill->HitTest(m_HoverPoint, &uFlag);

		if(trItem && m_bDragging)
		{
			m_pTreeSkill->SelectItem(trItem);
			m_pTreeSkill->Expand(trItem, TVE_EXPAND);
		}
	}
	//處理拖曳過程中的滾動問題
	else if(nIDEvent == m_nScrollTimerID)
	{
		CPoint  pt;
		CRect  rect;

		m_TimerTicks++;
		GetCursorPos(&pt);
		GetClientRect(&rect);
		ClientToScreen(&rect);

		HTREEITEM  hItem = m_pTreeSkill->GetFirstVisibleItem();
		
		if( pt.y < rect.top +10 )
		{
			//向上滾動
			int  slowscroll = 6 - (rect.top + 10 - pt.y )/20;
			if(0 == (m_TimerTicks % ((slowscroll > 0) ? slowscroll : 1)))
			{
				CImageList::DragShowNolock(FALSE);
				SendMessage(WM_VSCROLL,SB_LINEUP);
				m_pTreeSkill->SelectDropTarget(hItem);
				m_hItemDragD = hItem;
				CImageList::DragShowNolock(TRUE);
			}
		}
		else if(pt.y > rect.bottom - 10)
		{
			//向下滾動
			int  slowscroll = 6 - (pt.y - rect.bottom + 10)/20;
			if(0 == (m_TimerTicks % ((slowscroll > 0) ? slowscroll : 1)))
			{
				CImageList::DragShowNolock(FALSE);
				SendMessage( WM_VSCROLL,SB_LINEDOWN );
				int  nCount = m_pTreeSkill->GetVisibleCount();
				for(int i=0; i<nCount-1; i++)
				{
					hItem = m_pTreeSkill->GetNextVisibleItem(hItem);
				}

				if(NULL != hItem)
				{
					m_pTreeSkill->SelectDropTarget(hItem);
				}

				m_hItemDragD = hItem;
				CImageList::DragShowNolock(TRUE);
			}
		}
	}
	else
	{
		CTreeView::OnTimer(nIDEvent);
	}
}

void CLeftTreeView::SaveCurrentArticle()
{
	SaveArticleByTreeItemTag(m_nCurrentSelTag);
}

void CLeftTreeView::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
{
	TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(m_bCanEditLabel)
	{
		*pResult = 0;
	}
	else
	{
		*pResult = 1;
	}
}

void CLeftTreeView::OnMenuRename() 
{
	// TODO: Add your command handler code here
	HTREEITEM hItem=m_pTreeSkill->GetSelectedItem();

	m_bCanEditLabel = TRUE;
	m_pTreeSkill->EditLabel(hItem);
}

void CLeftTreeView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	CRect rcclient;
	GetClientRect(&rcclient);

	// create a compatible memory dc 
	CDC memdc;
	memdc.CreateCompatibleDC(&dc);	
	CBitmap bitmap;
	bitmap.CreateCompatibleBitmap(&dc, rcclient.Width(), rcclient.Height());
	memdc.SelectObject( &bitmap );

	CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);

	CDC maskdc;
	maskdc.CreateCompatibleDC(&dc);
	CBitmap maskbitmap;
	maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL);
	maskdc.SelectObject( &maskbitmap );
	maskdc.BitBlt( 0, 0, rcclient.Width(), rcclient.Height(), &memdc, 
		rcclient.left, rcclient.top, SRCCOPY);

	CBrush brush;
	brush.CreatePatternBrush(&m_bitmap);
	dc.FillRect(rcclient, &brush);	
	
	memdc.SetBkColor(RGB(0,0,0));          
	memdc.SetTextColor(RGB(255,255,255));  
	memdc.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &maskdc, rcclient.left, rcclient.top, SRCAND);	

	dc.SetBkColor(RGB(255,255,255));
	dc.SetTextColor(RGB(0,0,0));
	dc.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &maskdc, rcclient.left, rcclient.top, SRCAND);
	
	dc.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &memdc, 
					rcclient.left, rcclient.top,SRCPAINT);
	brush.DeleteObject();
	// Do not call CTreeView::OnPaint() for painting messages
}

BOOL CLeftTreeView::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	return TRUE;
//	return CTreeView::OnEraseBkgnd(pDC);
}

void CLeftTreeView::OnItemexpanded(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	Invalidate();
//	m_pTreeSkill->SetRedraw(TRUE);
	SetRedraw(TRUE);
	
	*pResult = 0;
}

void CLeftTreeView::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	SetRedraw(FALSE);
//	m_pTreeSkill->SetRedraw(FALSE);
	
	*pResult = 0;
}

LRESULT CLeftTreeView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CTreeView::WindowProc(message, wParam, lParam);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久| 麻豆91在线观看| 99国产精品久久| 国产精品美女久久久久久久久久久| 国产成人午夜电影网| 中文字幕精品综合| 日本丶国产丶欧美色综合| 亚洲永久免费视频| 欧美一区二区二区| 国产精品正在播放| 亚洲视频网在线直播| 色88888久久久久久影院野外| 一区二区三区在线视频观看58| 欧美日韩国产经典色站一区二区三区 | 精品国产乱码久久久久久闺蜜| 久久精品国产精品亚洲综合| 久久久青草青青国产亚洲免观| 99在线热播精品免费| 午夜欧美一区二区三区在线播放| 日韩免费成人网| www.欧美色图| 奇米一区二区三区av| 国产婷婷色一区二区三区四区 | 欧美电影免费提供在线观看| 国产91丝袜在线观看| 夜夜夜精品看看| 精品欧美一区二区三区精品久久| 成人免费毛片app| 亚洲柠檬福利资源导航| 国产精品电影一区二区三区| 欧美日韩国产电影| 国产999精品久久| 亚洲电影第三页| 国产精品污www在线观看| 欧美日韩高清一区二区不卡| 国产福利视频一区二区三区| 亚洲国产精品久久久久秋霞影院 | 天天色综合天天| 国产欧美1区2区3区| 欧美日韩国产123区| av一二三不卡影片| 久久激情综合网| 亚洲精品va在线观看| 国产色产综合色产在线视频| 69精品人人人人| 日本道精品一区二区三区| 国产高清亚洲一区| 毛片av一区二区三区| 亚洲午夜久久久久久久久久久 | 亚洲午夜精品17c| 国产精品久久久久久久久免费丝袜 | 色综合久久中文综合久久97| 国产乱子轮精品视频| 婷婷亚洲久悠悠色悠在线播放| 中文字幕日韩一区| 久久久久久久网| 日韩视频一区二区三区在线播放| 成人激情黄色小说| 国产老肥熟一区二区三区| 日本美女视频一区二区| 亚洲成人午夜影院| 亚洲国产成人高清精品| 亚洲人亚洲人成电影网站色| 国产精品系列在线| 国产丝袜在线精品| 国产亚洲成aⅴ人片在线观看 | 69精品人人人人| 欧美日本不卡视频| 在线不卡一区二区| 欧美老女人第四色| 欧美日韩免费一区二区三区视频| 91久久久免费一区二区| 一道本成人在线| 日本乱人伦aⅴ精品| 91蜜桃在线观看| 色婷婷精品久久二区二区蜜臂av| 色综合久久久网| 不卡欧美aaaaa| 91免费精品国自产拍在线不卡| 91亚洲国产成人精品一区二三| av资源网一区| 91福利在线免费观看| 欧美日韩亚洲综合一区二区三区| 欧美色欧美亚洲另类二区| 欧美精品aⅴ在线视频| 在线播放欧美女士性生活| 欧美精品v日韩精品v韩国精品v| 91精品免费在线| 久久理论电影网| 国产精品福利影院| 曰韩精品一区二区| 日韩激情中文字幕| 久久99精品久久久| 国产精品一二三区在线| 成人精品视频一区二区三区 | 91国产免费观看| 欧美老女人在线| 久久在线观看免费| 亚洲欧洲色图综合| 天天综合色天天| 激情文学综合丁香| 色综合久久综合网97色综合| 在线电影一区二区三区| 久久蜜桃av一区精品变态类天堂| 中文字幕一区在线观看| 亚洲成a人片在线不卡一二三区| 狠狠网亚洲精品| 色域天天综合网| 日韩三级高清在线| 国产精品美女久久久久久久| 五月天婷婷综合| 国产一区欧美日韩| 91精品办公室少妇高潮对白| 欧美电视剧免费全集观看| 成人欧美一区二区三区小说| 日韩精品一二三区| av激情综合网| 欧美一区二区三级| 国产精品久久久久7777按摩| 日本aⅴ精品一区二区三区 | 欧美午夜片在线观看| 日韩视频永久免费| 亚洲男人的天堂av| 激情综合色播激情啊| 欧美在线观看视频在线| 欧美经典一区二区三区| 五月激情六月综合| jlzzjlzz欧美大全| 精品国产在天天线2019| 亚洲一区二区五区| caoporen国产精品视频| 亚洲精品一区在线观看| 婷婷中文字幕综合| 色噜噜夜夜夜综合网| 国产区在线观看成人精品| 蜜臀久久99精品久久久画质超高清 | 国产欧美一区二区精品婷婷| 日本不卡1234视频| 91成人国产精品| 国产日韩一级二级三级| 另类欧美日韩国产在线| 在线观看成人小视频| 国产精品久久久99| 国产一区二区0| 91精品国产综合久久久久久漫画 | 亚洲精品一区二区三区在线观看| 亚洲女人****多毛耸耸8| 国产成人精品三级| 久久午夜色播影院免费高清| 热久久免费视频| 欧美日韩一区二区三区不卡| 国产精品高清亚洲| youjizz久久| 国产日韩欧美在线一区| 国产精品18久久久久久久久| 日韩一区二区三区三四区视频在线观看 | 丝袜a∨在线一区二区三区不卡| 一本色道久久加勒比精品| 最新中文字幕一区二区三区| 成人精品免费视频| 中文字幕av不卡| 成人免费看片app下载| 久久综合九色综合欧美98| 久久不见久久见免费视频7| 日韩欧美一区中文| 久久成人免费日本黄色| 欧美大片在线观看| 国产一区二区三区免费看| 精品国产一区二区亚洲人成毛片| 久久国产婷婷国产香蕉| 日韩欧美在线影院| 国产专区综合网| 国产女人18毛片水真多成人如厕| 国产综合久久久久久鬼色| 久久综合色播五月| 国产成人一级电影| 亚洲天堂av一区| 在线欧美一区二区| 日韩精品五月天| 欧美电影免费提供在线观看| 国产乱码精品一区二区三区五月婷| 亚洲精品一区在线观看| 岛国精品一区二区| 亚洲你懂的在线视频| 欧美性极品少妇| 久久99精品久久久久久久久久久久| 欧美电视剧免费全集观看| 国产一区日韩二区欧美三区| 中文字幕一区二区在线播放| 欧美亚洲禁片免费| 免费视频最近日韩| 国产亚洲一本大道中文在线| 成人黄色国产精品网站大全在线免费观看| 国产精品久久久99| 欧美日韩精品欧美日韩精品一 | 日韩一区二区视频| 成人理论电影网| 午夜av电影一区| 中文在线一区二区| 欧美日韩国产另类一区|