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

幽幽
 
posts - 51,  comments - 28,  trackbacks - 0

1。先來介紹REPORT類型的CListCtrl:
首先使用下面的語句設(shè)置CListCtrl的style:
 DWORD SetExtendedStyle( DWORD dwNewStyle );
其中
 LVS_EX_CHECKBOXES 表示添加CheckBox
 LVS_EX_FULLROWSELECT 表示選擇整行
 LVS_EX_GRIDLINES 表示添加表格線

如果設(shè)置了LVS_EX_CHECKBOXES屬性,則可以用
 BOOL GetCheck( int nItem ) const;
來得到某一行是否Checked。

可以先用下面的語句來刪除以前的東西:
 for(int k=2;k>=0;k--) //注意要從后往前刪,否則出錯
  m_ListCtrl.DeleteColumn(k);
 m_ListCtrl.DeleteAllItems();

用下面的語句新建列:
 m_ListCtrl.InsertColumn(0,_T("文件名"),LVCFMT_IMAGE|LVCFMT_LEFT);
 m_ListCtrl.InsertColumn(1,_T("儀器類別"));
 m_ListCtrl.InsertColumn(2,_T("項目類別"));
 
其中LVCFMT_IMAGE表示可以在第一列加入圖標。如果不要圖標可以刪去。

然后設(shè)置列寬:
 for(j=0;j<3;j++)
  m_ListCtrl.SetColumnWidth(j ,100);
 
以下為列表加入圖標,如果不需要圖標,可以跳過這一步。注意只在第一次加入,如果多次加入會出錯!
先在頭文件中加入聲明:
 CImageList m_ImageList;
這是必要的,如果在cpp的某個函數(shù)中加入由于生命期結(jié)束,CImageList自動釋放,則效果是列表中看不到圖標,只看到一個白方塊。
下面生成CImageList,并將其綁定到CListCtrl中,這是CImageList中還沒有圖標,只是一個容器:
 static int flag=2;
 if(flag==2){//只調(diào)用一次SetImageList,否則出錯
  m_ImageList.Create(128, 128, ILC_COLORDDB|ILC_MASK, 20, 1); 
  m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);
 }
 flag=(flag+1)%2;
如果CListCtrl已經(jīng)用過,曾經(jīng)加過圖標進去,這時就要刪除上次放進m_ImageList中的Image
 for(int kk=0;kk<m_ImageList.GetImageCount();kk++)
  m_ImageList.Remove(k);
 
下面介紹如何向CListCtrl里面加入行,并同時為每一行動態(tài)加入圖標:
假設(shè)m_listRowCount為要加入的行數(shù)。
 CBitmap* bitmap;
 bitmap=new CBitmap[m_list1rowCount];
 HBITMAP hbitmap; 
 
 for(int i = 0; i < m_listRowCount; i++)
 {
  //為每一行插入相應(yīng)的縮略圖
  CFile f;
  CFileException e;  
  if( !f.Open(m_FileName, CFile::modeRead, &e )){ //m_FileName為bmp文件名,由你來定
   hbitmap = (HBITMAP)LoadImage(NULL,path+"blank.bmp",IMAGE_BITMAP,0,0,
    LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
  }else{
   f.Close();
   hbitmap = (HBITMAP)LoadImage(NULL,bmpFile,IMAGE_BITMAP,0,0,
    LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
  }
  bitmap[i].Attach(hbitmap);
  m_ImageList.Add(&bitmap[i], RGB(0, 128, 128));
  
  //插入行
  m_ListCtrl.InsertItem(i,m_FileName,i);
  m_ListCtrl.SetItemText(i,1,type);
  m_ListCtrl.SetItemText(i,2,m_Path);
 }
  
 //記得刪除已經(jīng)沒用的臨時文件
 if(m_list1rowCount!=0)
  delete[] bitmap;

2。如果是ICON類型的CListCtrl,則要做一點點改動:
把綁定圖標集的代碼由
 SetImageList(&m_ImageList,LVSIL_SMALL);
改為
 SetImageList(&m_ImageList,LVSIL_NORMAL);

插入行時只用
 InsertItem(i,mainSet.m_FileName,i);
不用
 SetItemText(i,1,type);
之類的代碼。

設(shè)置報表的樣式
選中一整行:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_FULLROWSELECT); 
繪制表格:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_GRIDLINES);
帶復選框:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_CHECKBOXES);
自動切換:
m_list_ctrl.SetExtendedStyle(m_list_ctrl.GetExtendedStyle()|LVS_EX_TRACKSELECT);
選定一行:
設(shè)置CListCtrl的Show selection always選項
SetItemState (iIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED)
 
選中一個或多個項目時,會發(fā)送LVN_ITEMCHANGED消息,可以使用
GetSelectedCount()方法得到被選定的項的數(shù)目。
點擊列頭的消息響應(yīng):
ON_NOTIFY(HDN_ITEMCLICKW, 0, ResponseFunc)
消息,需要自己添加
或者:
ON_NOTIFY(LVN_COLUMNCLICK, ID_yourCtrl,  ResponseFunc)//向?qū)砑?br>前者后響應(yīng),后者先響應(yīng)
響應(yīng)函數(shù):
ResponseFunc(NMHDR *pNMHDR, LRESULT *pResult)
雙擊CListCtrl中的ITEM的消息是及消息函數(shù):
ON_NOTIFY(NM_DBLCLK, ID_yourCtrl, ResponseFunc)
單擊ITEM的消息響應(yīng):
ON_NOTIFY(NM_CLICK, ID_yourCtrl, ResponseFunc)
ResponseFunc(NMHDR *pNMHDR, LRESULT *pResult)
HDN_ITEMCLICK    就是Header control Notify message for mouse left click on the Header control!
而HDN_ITEMCLICK是當List View中存在一個Header Contrl時,Header Ctrl通知父窗口List View的!
CListCtrl中的Item被選中觸發(fā)LBN_SELCHANGE(通過WM_COMMAND)消息!
刪除CListCtrl中選定的項:
POSITION pos;
int nIndex;
for(; pos= GetFirstSelectedItemPosition();)
{
nIndex = GetNextSelectedItem(pos);
DeleteItem(nIndex);
}
在ListCtrl中進行排序
列表控件(CListCtrl)的頂部有一排按鈕,用戶可以通過選擇不同的列來對記錄進行排序。但是 CListCtrl并沒有自動排序的功能,我們需要自己添加一個用于排序的回調(diào)函數(shù)來比較兩個數(shù)據(jù)的大小,此外還需要響應(yīng)排序按鈕被點擊的消息。下面講述一下具體的做法。
CListCtrl提供了用于排序的函數(shù),函數(shù)原型為:BOOL CListCtrl::SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData )。其中第一個參數(shù)為全局排序函數(shù)的地址,第二個參數(shù)為用戶數(shù)據(jù),你可以根據(jù)你的需要傳遞一個數(shù)據(jù)或是指針。該函數(shù)返回-1代表第一項排應(yīng)在第二項前面,返回1代表第一項排應(yīng)在第二項后面,返回0代表兩項相等。
用于排序的函數(shù)原形為:int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort),其中第三個參數(shù)為調(diào)用者傳遞的數(shù)據(jù)(即調(diào)用SortItems時的第二個參數(shù)dwData)。第一和第二個參數(shù)為用于比較的兩項的ItemData,你可以通過DWORD CListCtrl::GetItemData( int nItem )/BOOL CListCtrl::SetItemData( int nItem, DWORD dwData )來對每一項的ItemData進行存取。在添加項時選用特定的CListCtrl::InsertItem也可以設(shè)置該值。由于你在排序時只能通過該值來確定項的位置所以你應(yīng)該比較明確的確定該值的含義。
最后一點,我們需要知道什么時候需要排序,實現(xiàn)這點可以在父窗口中對LVN_COLUMNCLICK消息進行處理來實現(xiàn)。
下面我們看一個例子,這個例子是一個派生類,并支持順序/倒序兩種方式排序。為了簡單我對全局數(shù)據(jù)進行排序,而在實際應(yīng)用中會有多組需要排序的數(shù)據(jù),所以需要通過傳遞參數(shù)的方式來告訴派序函數(shù)需要對什么數(shù)據(jù)進行排序。
//全局數(shù)據(jù)
struct DEMO_DATA
{
 char szName[20];
 int iAge;
}strAllData[5]={{"王某",30},{"張某",40},{"武某",32},{"陳某",20},{"李某",36}};
//CListCtrl派生類定義
class CSortList : public CListCtrl
{
// Construction
public:
 CSortList();
 BOOL m_fAsc;//是否順序排序
 int m_nSortedCol;//當前排序的列
protected:
 //{{AFX_MSG(CSortList)
 //}}AFX_MSG
...
};
//父窗口中包含該CListCtrl派生類對象
class CSort_in_list_ctrlDlg : public CDialog
{
// Construction
public:
 CSort_in_list_ctrlDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
 //{{AFX_DATA(CSort_in_list_ctrlDlg)
 enum { IDD = IDD_SORT_IN_LIST_CTRL_DIALOG };
 CSortList m_listTest;
 //}}AFX_DATA
}
//在父窗口中定義LVN_COLUMNCLICK消息映射
BEGIN_MESSAGE_MAP(CSort_in_list_ctrlDlg, CDialog)
 //{{AFX_MSG_MAP(CSort_in_list_ctrlDlg)
 ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, OnColumnclickList1)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()
//初始化數(shù)據(jù)
BOOL CSort_in_list_ctrlDlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 //初始化ListCtrl中數(shù)據(jù)列表
 m_listTest.InsertColumn(0,"姓名");
 m_listTest.InsertColumn(1,"年齡");
 m_listTest.SetColumnWidth(0,80);
 m_listTest.SetColumnWidth(1,80);
 for(int i=0;i<5;i++)
 {
  m_listTest.InsertItem(i,strAllData[i].szName);
  char szAge[10];
  sprintf(szAge,"%d",strAllData[i].iAge);
  m_listTest.SetItemText(i,1,szAge);
  //設(shè)置每項的ItemData為數(shù)組中數(shù)據(jù)的索引
  //在排序函數(shù)中通過該ItemData來確定數(shù)據(jù)
  m_listTest.SetItemData(i,i);
 }
 return TRUE;  // return TRUE  unless you set the focus to a control
}
//處理消息
void CSort_in_list_ctrlDlg::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
 //設(shè)置排序方式
 if( pNMListView->iSubItem == m_listTest.m_nSortedCol )
  m_listTest.m_fAsc = !m_listTest.m_fAsc;
 else
 {
  m_listTest.m_fAsc = TRUE;
  m_listTest.m_nSortedCol = pNMListView->iSubItem;
 }
 //調(diào)用排序函數(shù)
 m_listTest.SortItems( ListCompare, (DWORD)&m_listTest );       
 *pResult = 0;
}
//排序函數(shù)實現(xiàn)
int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
 //通過傳遞的參數(shù)來得到CSortList對象指針,從而得到排序方式
 CSortList* pV=(CSortList*)lParamSort;
 
 //通過ItemData來確定數(shù)據(jù)
 DEMO_DATA* pInfo1=strAllData+lParam1;
 DEMO_DATA* pInfo2=strAllData+lParam2;
 CString szComp1,szComp2;
 int iCompRes;
 switch(pV->m_nSortedCol)
 {
 case(0):
  //以第一列為根據(jù)排序
  szComp1=pInfo1->szName;
  szComp2=pInfo2->szName;
  iCompRes=szComp1.Compare(szComp2);
  break;
 case(1):
  //以第二列為根據(jù)排序
  if(pInfo1->iAge == pInfo2->iAge)
   iCompRes = 0;
  else
   iCompRes=(pInfo1->iAge < pInfo2->iAge)?-1:1;
  break;
 default:
  ASSERT(0);
  break;
 }
 //根據(jù)當前的排序方式進行調(diào)整
 if(pV->m_fAsc)
  return iCompRes;
 else
  return iCompRes*-1;
}
排序最快:
CListCtrl::SortItems
Example
// Sort the item in reverse alphabetical order.
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
  // lParamSort contains a pointer to the list view control.
  // The lParam of an item is just its index.
  CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
  CString    strItem1 = pListCtrl->GetItemText(lParam1, 0);
  CString    strItem2 = pListCtrl->GetItemText(lParam2, 0);
  return strcmp(strItem2, strItem1);
}
void snip_CListCtrl_SortItems()
{
  // The pointer to my list view control.
  extern CListCtrl* pmyListCtrl;
  // Sort the list view items using my callback procedure.
  pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
}
If you don’t want to allow the users to sort the list by clicking on the header, you can use the style LVS_NOSORTHEADER. However, if you do want to allow sorting, you do not specify the LVS_NOSORTHEADER. The control, though, does not sort the items. You have to handle the HDN_ITEMCLICK notification from the header control and process it appropriately. In the code below, we have used the sorting function SortTextItems() developed in a previous section. You may choose to sort the items in a different manner.
Step 1: Add two member variables
Add two member variables to the CListCtrl. The first variable to track which column has been sorted on, if any. The second variable to track if the sort is ascending or descending.
        int nSortedCol;
        BOOL bSortAscending;
 
Step 2: Initialize them in the constructor.
Initialize nSortedCol to -1 to indicate that no column has been sorted on. If the list is initially sorted, then this variable should reflect that.
 
        nSortedCol = -1;
        bSortAscending = TRUE;
 
Step 3: Add entry in message map to handle HDN_ITEMCLICK
Actually you need to add two entries. For HDN_ITEMCLICKA and HDN_ITEMCLICKW. Do not use the class wizard to add the entry. For one, you need to add two entries whereas the class wizard will allow you only one. Secondly, the class wizard uses the wrong macro in the entry. It uses ON_NOTIFY_REFLECT() instead of ON_NOTIFY(). Since the HDN_ITEMCLICK is a notification from the header control to the list view control, it is a direct notification and not a reflected one.
ON_NOTIFY(HDN_ITEMCLICKA, 0, OnHeaderClicked)
ON_NOTIFY(HDN_ITEMCLICKW, 0, OnHeaderClicked)
 Note that we specify the same function for both the notification. Actually the program will receive one or the other and not both. What notification it receives will depend on the OS. The list view control on Windows 95 will send the ANSI version and the control on NT will send the UNICODE version.
Also, note that the second argument is zero. This value filters for the id of the control and we know that header control id is zero.
Step 4: Write the OnHeaderClicked() function
Here’s where you decide what to do when the user clicks on a column header. The expected behaviour is to sort the list based on the values of the items in that column. In this function we have used the SortTextItems() function developed in a previous section. If any of the columns displays numeric or date values, then you would have to provide custom sorting for them.
 
void CMyListCtrl::OnHeaderClicked(NMHDR* pNMHDR, LRESULT* pResult)
{
        HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
        if( phdn->iButton == 0 )
        {
                // User clicked on header using left mouse button
                if( phdn->iItem == nSortedCol )
                        bSortAscending = !bSortAscending;
                else
                        bSortAscending = TRUE;
                nSortedCol = phdn->iItem;
                SortTextItems( nSortedCol, bSortAscending );
        }
        *pResult = 0;
}
讓CListCtrl的SubItem也具有編輯功能:
要重載一個文本框,然后在LVN_BEGINLABELEDIT時改變文本框位置。
CInEdit m_InEdit;
    if( ( GetStyle() & LVS_TYPEMASK ) == LVS_REPORT && ( m_nEditSubItem != 0 ) )
    {
        HWND    hwndEdit;
        CRect    rtBound;
        CString strText;
        hwndEdit = (HWND)SendMessage( LVM_GETEDITCONTROL );
        GetSubItemRect( pDispInfo->item.iItem, m_nEditSubItem, LVIR_LABEL, rtBound );
        m_InEdit.SubclassWindow( hwndEdit );
        m_InEdit.m_left = rtBound.left;
        strText = GetItemText( pDispInfo->item.iItem, m_nEditSubItem );
        m_InEdit.SetWindowText( strText );
    }
void CInEdit::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
    CRect rtClient;
    lpwndpos->x = m_left;  // m_left在LVN_BEGINLABELEDIT中設(shè)置
    CEdit::OnWindowPosChanging(lpwndpos);
   
    // TODO: Add your message handler code here
}


posted on 2008-06-14 02:48 幽幽 閱讀(6592) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用鏈接

留言簿(6)

隨筆分類(35)

隨筆檔案(51)

文章分類(3)

文章檔案(3)

相冊

我的鏈接

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            悠悠资源网亚洲青| 欧美成人精品一区| 欧美成人国产| 久久综合狠狠综合久久综合88| 午夜精品成人在线| 久久国产精品亚洲va麻豆| 久久精品国产一区二区电影 | 国产精品欧美日韩一区| 欧美精品在线网站| 国产精品扒开腿做爽爽爽软件| 欧美视频一区二区在线观看| 国产精品久久久久久久久久直播| 欧美性猛交xxxx免费看久久久| 国产欧美日韩另类一区| 黄色在线一区| 亚洲一区二区黄色| 免费在线观看成人av| 99国内精品| 久久精品一区中文字幕| 国产精品久久久久aaaa九色| 亚洲国产婷婷| 久久精品国产亚洲a| 一区二区欧美亚洲| 欧美精品乱码久久久久久按摩 | 久久视频这里只有精品| 欧美午夜视频在线观看| 久久福利视频导航| 欧美日韩国产大片| 韩国视频理论视频久久| 中日韩高清电影网| 亚洲第一在线| 久久精品国产69国产精品亚洲| 欧美伊人久久久久久久久影院 | 亚洲欧美日韩精品一区二区 | 久久精品一级爱片| 亚洲精品视频在线观看网站| 久久婷婷人人澡人人喊人人爽| 国产精品一二三四区| 蜜桃av一区二区| 极品中文字幕一区| 久久久久久久久综合| 久久精品九九| 伊人久久大香线| 久久精品夜色噜噜亚洲aⅴ| 亚洲午夜精品视频| 国产亚洲精品aa| 久久精品国产2020观看福利| 亚洲欧美日韩综合一区| 久久riav二区三区| 小处雏高清一区二区三区| 国产精品v欧美精品v日本精品动漫| 亚洲你懂的在线视频| 久久国产精品色婷婷| 99riav1国产精品视频| 亚洲欧美精品在线观看| 亚洲日本电影在线| 欧美在线观看视频一区二区三区| 黄色欧美成人| 亚洲午夜日本在线观看| 亚洲人成77777在线观看网| 亚洲午夜在线视频| 日韩亚洲国产精品| 久久久久**毛片大全| 欧美在线亚洲一区| 欧美一级电影久久| 欧美激情日韩| 免费观看一区| …久久精品99久久香蕉国产 | 亚洲一二三四久久| 久久久国产精彩视频美女艺术照福利 | 亚洲国产精品一区二区第四页av| 嫩模写真一区二区三区三州| 国产午夜精品麻豆| 先锋a资源在线看亚洲| 欧美一区二区三区视频免费播放| 蜜桃av久久久亚洲精品| 麻豆成人在线| 亚洲精品国产精品国自产观看浪潮| 欧美一区二区视频在线观看| 羞羞色国产精品| 国产欧美日韩不卡| 久久国产欧美精品| 免费亚洲电影在线| 99www免费人成精品| 欧美午夜寂寞影院| 欧美一区二区三区视频免费播放| 久久成人精品无人区| 精品999在线播放| 欧美成人国产| 亚洲一区二区三区在线播放| 欧美一区二区三区在线看| 狠狠色综合色区| 欧美激情第1页| 欧美亚洲视频一区二区| 欧美激情亚洲| 久久久久欧美| 一二三四社区欧美黄| 在线色欧美三级视频| 亚洲黄一区二区| 久久精品亚洲一区二区三区浴池| 亚洲高清视频的网址| 亚洲黄色av一区| 亚洲人成精品久久久久| 国产欧美亚洲精品| 久久九九电影| 99视频精品免费观看| 玖玖视频精品| 亚洲欧美日韩综合aⅴ视频| 国产精品视频在线观看| 久久九九99视频| 亚洲一区二区三区在线视频| 欧美成人午夜77777| 欧美一级网站| 亚洲天天影视| 亚洲午夜av在线| 日韩午夜中文字幕| 亚洲黄色尤物视频| 国外成人在线| 国产在线拍偷自揄拍精品| 国产精品视频区| 国产精品久久久久三级| 欧美三区美女| 国产人久久人人人人爽| 国产精品无码永久免费888| 欧美体内she精视频在线观看| 欧美另类综合| 国产精品日韩| 国模精品一区二区三区色天香| 国产精品v欧美精品∨日韩| 欧美色精品在线视频| 欧美日韩国产一区二区三区| 欧美黄色免费网站| 欧美大片91| 欧美视频一区二| 国产精品爽爽ⅴa在线观看| 国产精品hd| 在线视频观看日韩| 中文精品一区二区三区| 欧美精品二区| 国产丝袜一区二区| 亚洲福利视频网| 亚洲天堂av图片| 久久综合色综合88| 99精品视频免费观看视频| 亚洲欧美日韩久久精品| 久久久久在线| 欧美精品在线免费播放| 国产一区二区三区久久 | 国产麻豆综合| 亚洲精品一区二区三区av| 小黄鸭精品aⅴ导航网站入口| 免费成人在线视频网站| 亚洲主播在线观看| 欧美欧美午夜aⅴ在线观看| 韩国三级电影一区二区| 欧美一区二区视频在线观看| 亚洲每日在线| 欧美午夜视频一区二区| 日韩亚洲欧美一区二区三区| 蜜臀91精品一区二区三区| 亚洲一区二区三区四区在线观看| 久久久免费观看视频| 狠狠色丁香久久婷婷综合丁香 | 国产精品久久久久久超碰| 亚洲国产日韩欧美在线图片| 免费成人高清视频| 欧美不卡视频一区| 亚洲精品四区| 亚洲欧美激情一区| 国产综合亚洲精品一区二| 欧美chengren| 欧美日韩日韩| 久久久精品动漫| 欧美承认网站| 久久精品人人做人人综合| 欧美日韩久久精品| 亚洲人成在线观看一区二区| 亚洲欧洲一区二区在线播放| 欧美伦理91| 久久综合网色—综合色88| 欧美日本一区二区高清播放视频| 久久久久久一区二区三区| 麻豆av一区二区三区久久| 亚洲自拍都市欧美小说| 麻豆国产精品va在线观看不卡| 亚洲视频国产视频| 快播亚洲色图| 久久九九国产精品| 欧美精品一区二区三区一线天视频 | 国产毛片精品国产一区二区三区| 久久久欧美一区二区| 国产精品va在线播放我和闺蜜| 国产午夜精品理论片a级大结局| 亚洲一区中文| 妖精视频成人观看www| 欧美亚洲成人精品| 久久婷婷av| 日韩视频免费观看高清在线视频| 国产精品久久久久一区二区三区共| 久久久av网站|