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

積木

No sub title

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

常用鏈接

留言簿(1)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

原諒轉載自http://tech.ddvip.com/2008-11/122662837992492.html

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

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

  圖一:樹型控件節點拖動示例

  一、實現方法

  我們針對上述自定義類的實現功能,介紹實現思路和方法。

  (1)基本項目條拖動的實現

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

  (2)處理項目條的無意拖動

  牐犎綣在鼠標按下時不小心移動了鼠標,這時系統就認為產生了一個移動操作,這就產生了誤操作。解決這個問題的方法是設置時間延遲,也就是說當用戶按下鼠標后必須在原位置停留一段時間,才能激活拖動操作。

  (3)處理拖動過程中的滾動問題

  當我們拖動樹型控件的項目條時,如果目的節點不可見,則需要拖動滾動條或收攏其它一些節點以使得目的節點顯示出來,無疑,這會給我們帶來很大的不便。為此就要給樹型控件添加自動滾動支持。首先設置一個定時器,在 WM_TIMER 消息中檢測鼠標的位置,如果靠近樹型控件的下邊緣,則使得控件向下滾動。靠近上邊緣則向上滾動。滾動速度根據鼠標的位置確定。

  (4)拖動過程中節點的智能展開

  為了實現在拖動過程中鼠標停留在某個節點上一段時間后,該節點會自動展開的功能。設置一個定時器,當鼠標在拖動過程中停止在某個節點上時,定時器被啟動,再設置一變量保存當前的鼠標位置。

  二、編程步驟

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

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

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

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

  5、 添加代碼,編譯運行程序。

  三、程序代碼

// 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; 
//處理滾動的定時器所經過的時間 
  UINT m_nScrollTimerID; //處理滾動的定時器 
  CPoint m_HoverPoint; //鼠標位置 
  UINT m_nHoverTimerID; //鼠標敏感定時器 
  DWORD m_dwDragStart; //按下鼠標左鍵那一刻的時間 
  BOOL m_bDragging; //標識是否正在拖動過程中 
  CImageList* m_pDragImage; //拖動時顯示的圖象列表 
  HTREEITEM m_hItemDragS; //被拖動的標簽 
  HTREEITEM m_hItemDragD; //接受拖動的標簽 
  
//{{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; 
 
//得到用于拖動時顯示的圖象列表 
 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"將拖曳動作限制在該窗口 
 SetCapture(); 
 m_nScrollTimerID 
= SetTimer( 2,40,NULL ); 

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

 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 = HitTest(point,&flags)) != NULL ) 
  { 
   SelectDropTarget( hItem ); 
   m_hItemDragD 
= hItem; 
  } 
  CImageList::DragShowNolock( 
true ); 
  
//當條目被拖曳到左邊緣時,將條目放在根下 
  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 (); 
 
//限制拷貝條目數據和條目狀態 
 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) 

 
//鼠標敏感節點 
 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 ); 
  } 
 } 
 
//處理拖曳過程中的滾動問題 
 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 ) 
  { 
   
//向上滾動 
   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 ) 
  { 
   
//向下滾動 
   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(
"將進酒(君不見黃河之水天上來)"),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(
"茅屋為秋風所破歌(八月秋高風怒號)"),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) 評論(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>
            欧美日韩mp4| 亚洲色图在线视频| 欧美jizz19hd性欧美| 亚洲风情在线资源站| 一区二区三区日韩欧美精品| 亚洲免费中文字幕| 牛牛国产精品| 久久综合999| 国产精品一区毛片| 亚洲精品字幕| 久久尤物电影视频在线观看| 亚洲伦理自拍| 老鸭窝91久久精品色噜噜导演| 在线观看欧美日韩| 午夜精品视频网站| 亚洲电影成人| 欧美日韩二区三区| 亚洲欧美春色| 久久精品国产99精品国产亚洲性色 | 男女精品网站| 国产欧美日韩另类视频免费观看| 亚洲欧洲一二三| 久久综合中文| 性亚洲最疯狂xxxx高清| 国产精品高清在线| 一区二区三区欧美成人| 亚洲欧美综合| 国产精品亚洲综合一区在线观看 | 欧美日韩在线观看一区二区三区| 亚洲高清一区二| 久久人人爽人人爽| 久久国产精品免费一区| 亚洲精品日韩欧美| 欧美激情精品久久久久久黑人| 久久精品视频在线看| 国产一区二区三区免费不卡| 午夜在线精品| 亚洲欧美在线免费| 亚洲免费精品| 久久疯狂做爰流白浆xx| 日韩香蕉视频| 99视频国产精品免费观看| 欧美日韩p片| 免费不卡在线视频| 久久噜噜噜精品国产亚洲综合| 国内揄拍国内精品久久| 久久躁狠狠躁夜夜爽| 欧美日韩视频第一区| 欧美激情一区二区三区在线视频观看 | 久久香蕉精品| 国产精品视频免费在线观看| 亚洲日本中文字幕区| 欧美剧在线观看| 亚洲综合久久久久| 性欧美xxxx视频在线观看| 99在线精品视频| 亚洲一区二区av电影| 国产一区二区剧情av在线| 99成人在线| 日韩一级黄色av| 欧美a级大片| 欧美www在线| 在线看国产一区| 妖精视频成人观看www| 亚洲日本电影| 免费永久网站黄欧美| 六月婷婷一区| 伊人成综合网伊人222| 欧美亚洲综合另类| 99re6热在线精品视频播放速度 | 91久久亚洲| 国产精品视频精品视频| 99热精品在线观看| 亚洲在线电影| 国产精品视频福利| 欧美亚洲综合久久| 久久久人人人| 黄色一区二区三区| 男人的天堂亚洲| 136国产福利精品导航网址应用 | 亚洲精选一区| 一区二区三区日韩精品视频| 欧美日韩一区二区在线播放| 一区二区三区欧美激情| 伊人成人开心激情综合网| 久久久久女教师免费一区| 欧美大片一区二区| 国产美女一区二区| 欧美一区视频| 欧美国产日韩xxxxx| 亚洲人线精品午夜| 欧美日韩亚洲一区三区| 亚洲欧美不卡| 亚洲午夜黄色| 欧美国产一区二区三区激情无套| 久久婷婷影院| 日韩午夜在线电影| 国产精品进线69影院| 欧美一区二区三区视频在线观看| 美女主播视频一区| 99国产精品久久久久老师| 国产精品久久久久久久午夜片| 亚洲青涩在线| 欧美在线视频一区二区| 欧美午夜不卡在线观看免费| 亚洲人成在线观看| 亚洲欧美日韩在线播放| 激情丁香综合| 国产精品啊v在线| 久久精品av麻豆的观看方式| 亚洲激情网站免费观看| 欧美一区二区三区四区夜夜大片| 国产精品美女主播| 久久一区免费| 亚洲国产欧美一区二区三区久久| 亚洲国产成人精品女人久久久| 欧美日韩大陆在线| 久久精品一区| 亚洲一区精品电影| 亚洲欧洲日产国产网站| 久久久亚洲精品一区二区三区 | 日韩视频一区二区在线观看| 国产欧美成人| 欧美日韩一区二区视频在线| 久久夜色精品一区| 亚洲男人av电影| 一本久久综合| 亚洲国产精品久久91精品| 久久久99国产精品免费| 国产欧美日本一区二区三区| 欧美激情第二页| 久久精品国产第一区二区三区| 一区二区三区四区蜜桃| 亚洲国产精品尤物yw在线观看| 久久精品视频在线看| 亚洲黄网站黄| 欧美三级在线视频| 亚洲欧美中文日韩v在线观看| 99成人在线| 亚洲开发第一视频在线播放| 欧美激情二区三区| 男人的天堂亚洲| 免费久久精品视频| 麻豆精品一区二区av白丝在线| 久久蜜臀精品av| 久久精品国产亚洲一区二区三区 | 亚洲青色在线| 亚洲激情午夜| 亚洲欧洲一区二区三区| 亚洲高清视频在线| 亚洲国产片色| 日韩视频免费看| 日韩一区二区精品在线观看| 亚洲乱码国产乱码精品精98午夜| 亚洲日本欧美在线| 日韩网站免费观看| 亚洲图片欧洲图片av| 狠狠色狠狠色综合日日五| 国产亚洲欧美一级| 国产欧美91| 激情五月婷婷综合| 亚洲黄色av一区| 日韩一级黄色片| 亚洲一区综合| 久久国产日韩| 欧美aⅴ99久久黑人专区| 欧美激情视频一区二区三区在线播放| 亚洲福利免费| 日韩午夜在线电影| 欧美电影免费观看网站| 亚洲国产精品va在线看黑人动漫 | 亚洲在线观看| 欧美在线影院| 欧美粗暴jizz性欧美20| 亚洲精品一区中文| 亚洲欧美精品在线观看| 久久久久99| 欧美日韩国内自拍| 国产视频久久久久| 国产精品成人一区| 国产一区二区三区高清在线观看| 一区在线免费观看| 妖精视频成人观看www| 欧美一区二区视频免费观看| 老司机aⅴ在线精品导航| 亚洲剧情一区二区| 欧美制服丝袜第一页| 欧美一区免费视频| 欧美激情综合亚洲一二区| 久久综合色8888| 欧美视频网站| 影音先锋亚洲视频| 亚洲一区自拍| 亚洲福利在线观看| 亚洲欧美在线x视频| 欧美剧在线免费观看网站| 国产综合色在线| 伊甸园精品99久久久久久| 亚洲视频大全| 欧美激情自拍|