青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

積木

No sub title

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

原諒轉(zhuǎn)載自http://tech.ddvip.com/2008-11/122662837992492.html

Visual C++中提供的MFC類CtreeCtrl(樹型控件)用來顯示具有一定層次結(jié)構(gòu)的數(shù)據(jù)項(xiàng)時(shí)方便、直觀,所以它已經(jīng)被廣泛地應(yīng)用在各種軟件中,如資源管理器中的磁盤目錄就用的是樹型控件,我們?cè)诰幊讨幸矔?huì)經(jīng)常用到這個(gè)控件,但是這個(gè)控件也有缺陷,那就是它并不直接支持拖動(dòng)節(jié)點(diǎn)等高級(jí)特性,這使得程序員在編程時(shí)使用它受到了很大限制,同時(shí)又給軟件用戶帶來了一些不便。為此,本實(shí)例通過從 CTreeCtrl 中派生了一個(gè)類 CXTreeCtrl ,實(shí)現(xiàn)樹型控件中節(jié)點(diǎn)的拖動(dòng)。這個(gè)類具有如下的功能:⑴ 基本項(xiàng)目條拖動(dòng)的實(shí)現(xiàn);⑵ 處理項(xiàng)目條的無意拖動(dòng);⑶ 能處理項(xiàng)目條拖動(dòng)過程中的滾動(dòng)問題;⑷ 拖動(dòng)過程中節(jié)點(diǎn)會(huì)智能展開。程序編譯運(yùn)行后的效果如圖所示:

570)?'570px':'auto'; }" src="http://img.ddvip.com/2008_11_14/1226628379_ddvip_9835.png">

  圖一:樹型控件節(jié)點(diǎn)拖動(dòng)示例

  一、實(shí)現(xiàn)方法

  我們針對(duì)上述自定義類的實(shí)現(xiàn)功能,介紹實(shí)現(xiàn)思路和方法。

 ?。?)基本項(xiàng)目條拖動(dòng)的實(shí)現(xiàn)

  當(dāng)我們要拖動(dòng)樹型控件的一個(gè)項(xiàng)目條時(shí),樹型控件會(huì)給它的父窗口發(fā)送一個(gè)TVN_BEGINDRAG通知消息,所以可以在此消息的響應(yīng)函數(shù)中,調(diào)用 CTreeCtrl ::CreateDragImage ()函數(shù)創(chuàng)建表示當(dāng)前項(xiàng)目條正處在拖動(dòng)操作中的圖象,該函數(shù)創(chuàng)建的圖象由項(xiàng)目條的圖象和標(biāo)簽文本組成。創(chuàng)建了拖動(dòng)圖象后,調(diào)用CImageList::BeginDrag()函數(shù)指定拖動(dòng)圖象的熱點(diǎn)位置,然后調(diào)用CImageList::DragEnter()函數(shù)顯示拖動(dòng)圖象。接下來處理 WM_MOUSEMOVE 消息用于更新拖動(dòng)圖象,我們想讓移動(dòng)中的圖象經(jīng)過某些項(xiàng)目時(shí)高亮度顯示,這可以調(diào)用 CTreeCtrl ::SelectDropTarget() 來實(shí)現(xiàn)。在調(diào)用 SelectDropTarget()函數(shù)之前,需要先調(diào)用CImageList::DragShowNolock ( false )函數(shù)來隱藏圖象列表,然后再調(diào)用CImageList::DragShowNolock ( true ) 函數(shù)來恢復(fù)圖象列表的顯示,這樣就不會(huì)在拖動(dòng)過程中留下難看的軌跡。最后我們處理 WM_LBUTTONUP 消息用于完成拖動(dòng)操作,在該消息響應(yīng)函數(shù)中,我們需要完成結(jié)束拖動(dòng)圖象的顯示、刪除拖動(dòng)圖象、釋放鼠標(biāo)、節(jié)點(diǎn)的拷貝/刪除等操作。在節(jié)點(diǎn)的拷貝/刪除操作中,如果是父節(jié)點(diǎn)拖到子節(jié)點(diǎn)上,我們可以先將父節(jié)點(diǎn)拷到根結(jié)點(diǎn)下的臨時(shí)節(jié)點(diǎn)中,再從臨時(shí)結(jié)點(diǎn)處拷到子節(jié)點(diǎn),然后將根結(jié)點(diǎn)下的臨時(shí)節(jié)點(diǎn)刪除,這樣做的目的是防止產(chǎn)生異常。

  (2)處理項(xiàng)目條的無意拖動(dòng)

  牐犎綣在鼠標(biāo)按下時(shí)不小心移動(dòng)了鼠標(biāo),這時(shí)系統(tǒng)就認(rèn)為產(chǎn)生了一個(gè)移動(dòng)操作,這就產(chǎn)生了誤操作。解決這個(gè)問題的方法是設(shè)置時(shí)間延遲,也就是說當(dāng)用戶按下鼠標(biāo)后必須在原位置停留一段時(shí)間,才能激活拖動(dòng)操作。

 ?。?)處理拖動(dòng)過程中的滾動(dòng)問題

  當(dāng)我們拖動(dòng)樹型控件的項(xiàng)目條時(shí),如果目的節(jié)點(diǎn)不可見,則需要拖動(dòng)滾動(dòng)條或收攏其它一些節(jié)點(diǎn)以使得目的節(jié)點(diǎn)顯示出來,無疑,這會(huì)給我們帶來很大的不便。為此就要給樹型控件添加自動(dòng)滾動(dòng)支持。首先設(shè)置一個(gè)定時(shí)器,在 WM_TIMER 消息中檢測鼠標(biāo)的位置,如果靠近樹型控件的下邊緣,則使得控件向下滾動(dòng)。靠近上邊緣則向上滾動(dòng)。滾動(dòng)速度根據(jù)鼠標(biāo)的位置確定。

 ?。?)拖動(dòng)過程中節(jié)點(diǎn)的智能展開

  為了實(shí)現(xiàn)在拖動(dòng)過程中鼠標(biāo)停留在某個(gè)節(jié)點(diǎn)上一段時(shí)間后,該節(jié)點(diǎn)會(huì)自動(dòng)展開的功能。設(shè)置一個(gè)定時(shí)器,當(dāng)鼠標(biāo)在拖動(dòng)過程中停止在某個(gè)節(jié)點(diǎn)上時(shí),定時(shí)器被啟動(dòng),再設(shè)置一變量保存當(dāng)前的鼠標(biāo)位置。

  二、編程步驟

  1、 新建一對(duì)話框工程DragTree,編輯資源,在對(duì)話框中加入一樹型控件IDC_TREE ,屬性設(shè)置為:Has Buttons、Has Lines、Lines at root、Edit Labels、Border;

  2、 使用Class Wizard給該控件添加一個(gè)成員變量 m_wndTree ,在代碼部分將該控件的類型修改為CXTreeCtrl。

  3、 在對(duì)話框的OnInitDialog()函數(shù)中添加代碼,初始化樹型控件的項(xiàng)目條;

  4、 制作一個(gè)圖像資源(ID為IDB_TREEIMAGE),其中包含兩個(gè)小圖標(biāo),用來作為樹型控件項(xiàng)目條的顯示圖標(biāo);

  5、 添加代碼,編譯運(yùn)行程序。

  三、程序代碼

// XTreeCtrl.h : header file 
#if !defined(AFX_XTREECTRL_H__3EF12526_EF66_4FD9_A572_59476441D79A__INCLUDED_) 
#define AFX_XTREECTRL_H__3EF12526_EF66_4FD9_A572_59476441D79A__INCLUDED_ 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
class CXTreeCtrl : public CTreeCtrl 

 
// Construction 
 public
  CXTreeCtrl(); 
  
// Attributes 
 public
  
// Operations 
 public
  
// Overrides 
  
// ClassWizard generated virtual function overrides 
  
//{{AFX_VIRTUAL(CXTreeCtrl) 
  
//}}AFX_VIRTUAL 
  
// Implementation 
 public
  
virtual ~CXTreeCtrl(); 
  
// Generated message map functions 
 protected
  UINT m_TimerTicks; 
//處理滾動(dòng)的定時(shí)器所經(jīng)過的時(shí)間 
  UINT m_nScrollTimerID; //處理滾動(dòng)的定時(shí)器 
  CPoint m_HoverPoint; //鼠標(biāo)位置 
  UINT m_nHoverTimerID; //鼠標(biāo)敏感定時(shí)器 
  DWORD m_dwDragStart; //按下鼠標(biāo)左鍵那一刻的時(shí)間 
  BOOL m_bDragging; //標(biāo)識(shí)是否正在拖動(dòng)過程中 
  CImageList* m_pDragImage; //拖動(dòng)時(shí)顯示的圖象列表 
  HTREEITEM m_hItemDragS; //被拖動(dòng)的標(biāo)簽 
  HTREEITEM m_hItemDragD; //接受拖動(dòng)的標(biāo)簽 
  
//{{AFX_MSG(CXTreeCtrl) 
   afx_msg void OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult); 
   afx_msg 
void OnMouseMove(UINT nFlags, CPoint point); 
   afx_msg 
void OnLButtonUp(UINT nFlags, CPoint point); 
   afx_msg 
void OnLButtonDown(UINT nFlags, CPoint point); 
   afx_msg 
void OnTimer(UINT nIDEvent); 
  
//}}AFX_MSG 
  DECLARE_MESSAGE_MAP() 
 
private
  HTREEITEM CopyBranch(HTREEITEM htiBranch,HTREEITEM htiNewParent,HTREEITEM htiAfter); 
  HTREEITEM CopyItem(HTREEITEM hItem,HTREEITEM htiNewParent,HTREEITEM htiAfter); 
}; 
#endif 
//////////////////////////////////////////////////////////// CXTreeCtrl 
#include "stdafx.h" 
#include 
"DragTree.h" 
#include 
"XTreeCtrl.h" 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
#define DRAG_DELAY 60 
CXTreeCtrl::CXTreeCtrl() 

 m_bDragging 
= false

CXTreeCtrl::
~CXTreeCtrl() 
{} 
BEGIN_MESSAGE_MAP(CXTreeCtrl, CTreeCtrl) 
//{{AFX_MSG_MAP(CXTreeCtrl) 
 ON_NOTIFY_REFLECT(TVN_BEGINDRAG, OnBegindrag) 
 ON_WM_MOUSEMOVE() 
 ON_WM_LBUTTONUP() 
 ON_WM_LBUTTONDOWN() 
 ON_WM_TIMER() 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
void CXTreeCtrl::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult) 

 NM_TREEVIEW
* pNMTreeView = (NM_TREEVIEW*)pNMHDR; 
 
*pResult = 0
 
//如果是無意拖曳,則放棄操作 
 if( (GetTickCount() - m_dwDragStart) < DRAG_DELAY ) 
  
return
 m_hItemDragS 
= pNMTreeView->itemNew.hItem; 
 m_hItemDragD 
= NULL; 
 
//得到用于拖動(dòng)時(shí)顯示的圖象列表 
 m_pDragImage = CreateDragImage( m_hItemDragS ); 
 
if!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"將拖曳動(dòng)作限制在該窗口 
 SetCapture(); 
 m_nScrollTimerID 
= SetTimer( 2,40,NULL ); 

void CXTreeCtrl::OnMouseMove(UINT nFlags, CPoint point) 

 HTREEITEM hItem; 
 UINT flags; 
 
//檢測鼠標(biāo)敏感定時(shí)器是否存在,如果存在則刪除,刪除后再定時(shí) 
 if( m_nHoverTimerID ) 
 { 
  KillTimer( m_nHoverTimerID ); 
  m_nHoverTimerID 
= 0
 } 
 m_nHoverTimerID 
= SetTimer( 1,800,NULL ); //定時(shí)為 0.8 秒則自動(dòng)展開 
 m_HoverPoint = point; 
 
if( m_bDragging ) 
 { 
  CPoint pt 
= point; 
  CImageList::DragMove( pt ); 
  
//鼠標(biāo)經(jīng)過時(shí)高亮顯示 
  CImageList::DragShowNolock( false ); //避免鼠標(biāo)經(jīng)過時(shí)留下難看的痕跡 
  if( (hItem = HitTest(point,&flags)) != NULL ) 
  { 
   SelectDropTarget( hItem ); 
   m_hItemDragD 
= hItem; 
  } 
  CImageList::DragShowNolock( 
true ); 
  
//當(dāng)條目被拖曳到左邊緣時(shí),將條目放在根下 
  CRect rect; 
  GetClientRect( 
&rect ); 
  
if( point.x < rect.left + 20 ) 
   m_hItemDragD 
= NULL; 
 } 
 CTreeCtrl::OnMouseMove(nFlags, point); 

void CXTreeCtrl::OnLButtonUp(UINT nFlags, CPoint point) 

 CTreeCtrl::OnLButtonUp(nFlags, point); 
 
if( m_bDragging ) 
 { 
  m_bDragging 
= FALSE; 
  CImageList::DragLeave( 
this ); 
  CImageList::EndDrag(); 
  ReleaseCapture(); 
  delete m_pDragImage; 
  SelectDropTarget( NULL ); 
  
if( m_hItemDragS == m_hItemDragD ) 
  { 
   KillTimer( m_nScrollTimerID ); 
   
return
  } 
  Expand( m_hItemDragD,TVE_EXPAND ); 
  HTREEITEM htiParent 
= m_hItemDragD; 
  
while( (htiParent = GetParentItem(htiParent)) != NULL ) 
  { 
   
if( htiParent == m_hItemDragS ) 
   { 
    HTREEITEM htiNewTemp 
= CopyBranch( m_hItemDragS,NULL,TVI_LAST ); 
    HTREEITEM htiNew 
= CopyBranch( htiNewTemp,m_hItemDragD,TVI_LAST ); 
    DeleteItem( htiNewTemp ); 
    SelectItem( htiNew ); 
    KillTimer( m_nScrollTimerID ); 
    
return
   } 
  } 
  HTREEITEM htiNew 
= CopyBranch( m_hItemDragS,m_hItemDragD,TVI_LAST ); 
  DeleteItem( m_hItemDragS ); 
  SelectItem( htiNew ); 
  KillTimer( m_nScrollTimerID ); 
 } 

HTREEITEM CXTreeCtrl::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; 
 GetItem( 
&tvstruct.item ); 
 sText 
= 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 
= InsertItem( &tvstruct ); 
 sText.ReleaseBuffer (); 
 
//限制拷貝條目數(shù)據(jù)和條目狀態(tài) 
 SetItemData( hNewItem,GetItemData(hItem) ); 
 SetItemState( hNewItem,GetItemState(hItem,TVIS_STATEIMAGEMASK),TVIS_STATEIMAGEMASK); 
 
return hNewItem; 

HTREEITEM CXTreeCtrl::CopyBranch(HTREEITEM htiBranch, HTREEITEM htiNewParent, HTREEITEM htiAfter) 
//拷貝分支 

 HTREEITEM hChild; 
 HTREEITEM hNewItem 
= CopyItem( htiBranch,htiNewParent,htiAfter ); 
 hChild 
= GetChildItem( htiBranch ); 
 
while( hChild != NULL ) 
 { 
  CopyBranch( hChild,hNewItem,htiAfter ); 
  hChild 
= GetNextSiblingItem( hChild ); 
 } 
 
return hNewItem; 

void CXTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point) //處理無意拖曳 

 m_dwDragStart 
= GetTickCount(); 
 CTreeCtrl::OnLButtonDown(nFlags, point); 

void CXTreeCtrl::OnTimer(UINT nIDEvent) 

 
//鼠標(biāo)敏感節(jié)點(diǎn) 
 if( nIDEvent == m_nHoverTimerID ) 
 { 
  KillTimer( m_nHoverTimerID ); 
  m_nHoverTimerID 
= 0
  HTREEITEM trItem 
= 0
  UINT uFlag 
= 0
  trItem 
= HitTest( m_HoverPoint,&uFlag ); 
  
if( trItem && m_bDragging ) 
  { 
   SelectItem( trItem ); 
   Expand( trItem,TVE_EXPAND ); 
  } 
 } 
 
//處理拖曳過程中的滾動(dòng)問題 
 else if( nIDEvent == m_nScrollTimerID ) 
 { 
  m_TimerTicks
++
  CPoint pt; 
  GetCursorPos( 
&pt ); 
  CRect rect; 
  GetClientRect( 
&rect ); 
  ClientToScreen( 
&rect ); 
  HTREEITEM hItem 
= GetFirstVisibleItem(); 
  
if( pt.y < rect.top +10 ) 
  { 
   
//向上滾動(dòng) 
   int slowscroll = 6 - (rect.top + 10 - pt.y )/20
   
if0 == (m_TimerTicks % ((slowscroll > 0? slowscroll : 1)) ) 
   { 
    CImageList::DragShowNolock ( 
false ); 
    SendMessage( WM_VSCROLL,SB_LINEUP ); 
    SelectDropTarget( hItem ); 
    m_hItemDragD 
= hItem; 
    CImageList::DragShowNolock ( 
true ); 
   } 
  } 
  
else if( pt.y > rect.bottom - 10 ) 
  { 
   
//向下滾動(dòng) 
   int slowscroll = 6 - (pt.y - rect.bottom + 10)/20
   
if0 == (m_TimerTicks % ((slowscroll > 0? slowscroll : 1)) ) 
   { 
    CImageList::DragShowNolock ( 
false ); 
    SendMessage( WM_VSCROLL,SB_LINEDOWN ); 
    
int nCount = GetVisibleCount(); 
    
forint i=0 ; i<nCount-1 ; i++ ) 
     hItem 
= GetNextVisibleItem( hItem ); 
     
if( hItem ) 
      SelectDropTarget( hItem ); 
     m_hItemDragD 
= hItem; 
     CImageList::DragShowNolock ( 
true ); 
   } 
  } 
 } 
 
else
  CTreeCtrl::OnTimer(nIDEvent); 

//////////////////////////////////////////////////////////// 
BOOL CDragTreeDlg::OnInitDialog() 

 CDialog::OnInitDialog(); 
 …………………….
//此處代碼省略 
 
// TODO: Add extra initialization here 
 m_image.Create ( IDB_TREEIMAGE,16,1,RGB(255,255,255) ); 
 m_wndTree.SetImageList ( 
&m_image,TVSIL_NORMAL ); 
 HTREEITEM hti1 
= m_wndTree.InsertItem ( _T("唐詩"),0,1 ); 
 HTREEITEM hti2 
= m_wndTree.InsertItem ( _T("宋詞"),0,1 ); 
 HTREEITEM hti3 
= m_wndTree.InsertItem ( _T("元曲"),0,1 ); 
 HTREEITEM hti4 
= m_wndTree.InsertItem ( _T("李白"),0,1,hti1 ); 
 m_wndTree.InsertItem ( _T(
"靜夜思(床前明月光)"),0,1,hti4 ); 
 m_wndTree.InsertItem ( _T(
"將進(jìn)酒(君不見黃河之水天上來)"),0,1,hti4 ); 
 m_wndTree.InsertItem ( _T(
"望廬山瀑布(日照香爐生紫煙)"),0,1,hti4 ); 
 m_wndTree.InsertItem ( _T(
"蜀道難(噫吁戲,危乎高哉)"),0,1,hti4 ); 
 HTREEITEM hti5 
= m_wndTree.InsertItem ( _T("杜甫"),0,1,hti1 ); 
 m_wndTree.InsertItem ( _T(
"蜀相(丞相祠堂何處尋)"),0,1,hti5 ); 
 m_wndTree.InsertItem ( _T(
"春望(國破山河在)"),0,1,hti5 ); 
 m_wndTree.InsertItem ( _T(
"茅屋為秋風(fēng)所破歌(八月秋高風(fēng)怒號(hào))"),0,1,hti5 ); 
 HTREEITEM hti6 
= m_wndTree.InsertItem ( _T("白居易"),0,1,hti1 ); 
 m_wndTree.InsertItem ( _T(
"長恨歌(漢皇重色思傾國)"),0,1,hti6 ); 
 m_wndTree.InsertItem ( _T(
"琵琶行並序(潯陽江頭夜送客)"),0,1,hti6 ); 
 m_wndTree.InsertItem ( _T(
"李清照"),0,1,hti2 ); 
 m_wndTree.InsertItem ( _T(
"柳永"),0,1,hti2 ); 
 
return TRUE; // return TRUE unless you set the focus to a control 
}

 

posted on 2011-11-04 11:23 Jacc.Kim 閱讀(732) 評(píng)論(0)  編輯 收藏 引用 所屬分類: VC / C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产高清| 亚洲电影网站| 国产欧美精品一区二区三区介绍 | 午夜久久福利| 国产精品色一区二区三区| 午夜精品久久| 免费成人美女女| 亚洲日本无吗高清不卡| 欧美日韩综合不卡| 欧美一区二区三区在线| 欧美国产精品劲爆| 99在线热播精品免费99热| 国产精品另类一区| 欧美一区二区三区四区在线| 久久综合网络一区二区| 亚洲美女在线观看| 国产精品亚洲视频| 裸体歌舞表演一区二区| 在线视频亚洲欧美| 美国十次了思思久久精品导航| 亚洲黄页视频免费观看| 国产精品高潮视频| 久久综合色8888| 99热这里只有精品8| 久久激情五月丁香伊人| 亚洲靠逼com| 国产亚洲美州欧州综合国| 欧美高潮视频| 欧美一级淫片播放口| 亚洲国产精品一区二区久| 欧美一区二区三区免费视| 亚洲日本在线观看| 国产亚洲精品综合一区91| 欧美—级a级欧美特级ar全黄| 午夜精品一区二区三区四区| 亚洲国产女人aaa毛片在线| 久久se精品一区二区| 一本色道久久综合亚洲精品小说| 国产一区91| 欧美日韩一二三四五区| 久久午夜电影网| 国产精品99久久久久久人| 欧美激情第一页xxx| 久久精品国内一区二区三区| 这里只有精品电影| 亚洲国产成人高清精品| 国产视频亚洲| 欧美网站在线| 欧美精彩视频一区二区三区| 久久精品网址| 欧美亚洲视频一区二区| 一本在线高清不卡dvd| 亚洲国产高清一区二区三区| 老司机午夜精品视频| 性欧美xxxx视频在线观看| 一区二区免费看| 亚洲茄子视频| 激情综合自拍| 国产综合精品一区| 国产欧美日韩精品a在线观看| 欧美视频一区二区三区四区| 欧美激情一区二区| 免费视频久久| 蜜月aⅴ免费一区二区三区| 久久久精品国产99久久精品芒果| 香蕉尹人综合在线观看| 亚洲天堂激情| 亚洲一区二区黄| 在线一区二区视频| 在线亚洲成人| 亚洲欧美成人| 性欧美暴力猛交另类hd| 午夜精品久久久| 欧美一区二区大片| 欧美一区二区三区视频| 久久精精品视频| 久久男人资源视频| 美女精品网站| 欧美国产视频在线| 欧美日韩大片一区二区三区| 欧美日韩亚洲综合| 国产精品盗摄一区二区三区| 国产精品免费看| 国产精品人人做人人爽| 国产精品自拍在线| 国产一区亚洲一区| 一区二区三区在线免费视频| 亚洲国产精品一区制服丝袜 | 亚洲综合首页| 午夜久久福利| 久久精品伊人| 欧美 亚欧 日韩视频在线| 欧美高潮视频| 国产精品久久久久久久电影| 国产啪精品视频| 亚洲大胆美女视频| 亚洲毛片一区二区| 亚洲综合日韩在线| 久久久国产精品一区二区三区| 久久综合给合| 亚洲欧洲一区二区在线播放| 亚洲性图久久| 久久精品国产免费看久久精品| 蜜臀va亚洲va欧美va天堂| 欧美日韩国产小视频| 国产女主播视频一区二区| 影音先锋日韩精品| 一区二区三区高清在线| 欧美中文字幕不卡| 亚洲高清av在线| 亚洲视频福利| 久久野战av| 欧美午夜精品一区二区三区| 国内精品一区二区| 999亚洲国产精| 久久国内精品自在自线400部| 欧美国产一区二区三区激情无套| 一本久道综合久久精品| 久久久水蜜桃av免费网站| 欧美三级视频在线播放| 一区二区三区在线观看视频| 亚洲特级片在线| 免费日韩视频| 亚洲综合色丁香婷婷六月图片| 久久一区二区三区四区五区| 国产精品久久国产精麻豆99网站| 亚洲成人资源网| 亚洲欧美综合精品久久成人| 欧美国产综合视频| 亚洲欧美国产制服动漫| 欧美日韩大片| 亚洲第一福利在线观看| 欧美一区二区三区免费观看视频 | 亚洲免费av电影| 久久精品免费播放| 国产精品久久久久国产精品日日| 最新国产の精品合集bt伙计| 久久久91精品国产一区二区三区| 亚洲精品自在久久| 麻豆成人在线播放| 韩日在线一区| 欧美一区二区视频97| 一本色道久久综合狠狠躁篇怎么玩 | 欧美性猛交视频| 亚洲精品久久久久久久久久久久久| 久久精品99| 亚洲午夜激情网站| 欧美三级中文字幕在线观看| 亚洲人精品午夜在线观看| 另类酷文…触手系列精品集v1小说| 亚洲欧美三级伦理| 欧美性大战久久久久久久蜜臀| 99这里只有久久精品视频| 欧美国产日韩a欧美在线观看| 久久久99免费视频| 国产亚洲精品久| 久久国产综合精品| 亚洲欧美国产制服动漫| 国产精品私拍pans大尺度在线| 亚洲一区二区在线播放| 99av国产精品欲麻豆| 欧美日韩国产在线| 在线亚洲伦理| 99国内精品久久| 欧美日韩理论| 亚洲一区999| 一区二区高清视频在线观看| 欧美视频1区| 亚洲深爱激情| 亚洲午夜羞羞片| 国产精品美女xx| 亚洲欧美日韩网| 亚洲欧美国产精品桃花| 国产美女精品一区二区三区| 久久精品网址| 久久精品一本| 91久久精品美女高潮| 亚洲国产日韩一区| 欧美日本韩国一区| 亚洲嫩草精品久久| 午夜精品福利一区二区三区av | 亚洲第一中文字幕| 男人的天堂亚洲在线| 美女视频一区免费观看| 一本色道88久久加勒比精品| 在线综合+亚洲+欧美中文字幕| 国产农村妇女精品一二区| 久久久久久久波多野高潮日日| 久久久久久久久岛国免费| 亚洲黄色成人| 一本不卡影院| 国内成+人亚洲| 欧美激情欧美激情在线五月| 欧美日韩综合在线免费观看| 欧美在线免费观看亚洲| 久久亚洲精品网站| 一区二区激情| 欧美在线欧美在线| 99精品黄色片免费大全| 亚洲欧美日韩国产一区二区|