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

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

?? wtl for mfc programmers, part iv - dialogs and controls - wtl.htm

?? WT教程中文版 內(nèi)有詳細的介紹 包括各個方面
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<html>
<head>
<title>WTL for MFC Programmers, Part IV - Dialogs and Controls</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#33CCCC" text="#000000">
<p align="center"><b><font style="FONT-SIZE: 16pt" size="4" color="#0033CC">WTL 
  for MFC Programmers,Part IV - Dialogs and Controls</font></b><br>
  <br>
</p>
<p align="left">原作 :<b><font color="#CC3366">Michael Dunn</font></b> [<a href="http://www.codeproject.com/wtl/WTL4MFC4.asp">英文原文</a>]<br>
  翻譯 :<a href="mailto:inte2000@163.com">Orbit(桔皮干了)</a> [<a href="http://www.winmsg.com/cn/orbit.htm">http://www.winmsg.com/cn/orbit.htm</a>]</p>
<p align="left"><a href="demo/WTL4MFC4_demo.zip">下載演示程序代碼</a></p>
 
<H2><font color="#FFFF66">本章內(nèi)容</font></H2>
<UL>
  <LI><A 
        href="#intro">介紹</A> 
  <LI><A 
        href="#refresher">回顧一下ATL的對話框</A> 
  <LI><A 
        href="#ccwrappers">通用控件的封裝</A> 
  <LI><A 
        href="#appwizard">用應用程序向導生成基于對話框的程序</A> 
  <LI><A 
        href="#usingwrap">使用控件的封裝類</A> 
    <UL>
      <LI><A href="#atl1">ATL 方式 1 - 連接一個CWindow對象</A> 
      <LI><A href="#atl2">ATL 方式 2 - &nbsp;包容器窗口(CContainedWindow)</A> 
      <LI><A href="#atl3">ATL 方式 3 - 子類化(Subclassing)</A> 
      <LI><A href="#wtlway">WTL 方式 - 對話框數(shù)據(jù)交換(DDX)</A> </LI>
    </UL>
  <LI><A href="#moreddx">DDX的詳細內(nèi)容</A> 
    <UL>
      <LI><A 
          href="#ddxmacros">DDX 宏</A> 
      <LI><A href="#moreddx">有關 DoDataExchange()的詳細內(nèi)容</A> 
      <LI><A 
          href="#usingddx">使用 DDX</A> </LI>
    </UL>
  <LI><A 
        href="#handlenotify">處理控件發(fā)送的通知消息</A> 
    <UL>
      <LI><A 
          href="#handleinparent">在父窗口中響應控件的通知消息</A> 
      <LI><A 
          href="#reflnotify">反射通知消息</A> 
        <UL>
          <LI><A 
            href="#wtlreflmacros">用來處理反射消息的WTL宏</A> </LI>
        </UL>
      </LI>
    </UL>
  <LI><A href="#oddsends">容易出錯和混淆的地方</A> 
    <UL>
      <LI><A 
          href="#dlgfonts"> 對話框的字體</A> 
      <LI><A 
          href="#atlmincrt">_ATL_MIN_CRT</A> </LI>
    </UL>
  <LI><A 
        href="#revisionhistory">修改記錄</A> </LI>
</UL>
  
<H2><A name=intro></A><font color="#FFFF66">對第四章的介紹</font></H2>
      
<P>MFC 的對話框和控件的封裝真得可以節(jié)省你很多時間和功夫。沒有MFC對控件的封裝,你要操作控件就得耐著性子填寫各種結構并寫很多的SendMessage調(diào)用。MFC還提供了對話框數(shù)據(jù)交換(DDX),它可以在控件和變量之間傳輸數(shù)據(jù)。WTL 
  當然也提供了這些功能,并對控件的封裝做了很多改進。本文將著眼于一個基于對話框的程序演示你以前用MFC實現(xiàn)的功能,除此之外還有WTL消息處理的增強功能。第五章將介紹高級界面特性和WTL對新控件的封裝。</P>
      <H2><A name=refresher></A><font color="#FFFF66">回顧一下ATL的對話框</font></H2>
      
<P>現(xiàn)在回顧一下<A href="WTL%20for%20MFC%20Programmers,%20Part%20I%20-%20ATL%20GUI%20Classes%20-%20WTL.htm">第一章</A> 
  提到的兩個對話框類,CDialogImpl 和 CAxDialogImpl。CAxDialogImpl用于包含ActiveX控件的對話框。本文不準備介紹ActiveX控件,所以只使用CDialogImpl。</P>
      
<P>創(chuàng)建一個對話框需要做三件事:</P>
      <OL>
        
  <LI>創(chuàng)建一個對話框資源
  <LI>從CDialogImpl類派生一個新類
  <LI>添加一個公有成員變量IDD,將它設置為對話框資源的ID. </LI>
</OL>
      
<P>然后就像主框架窗口那樣添加消息處理函數(shù),WTL沒有改變這些,不過確實添加了一些其他能夠在對話框中使用得特性。</P>
<h2><A name=ccwrappers></A><font color="#FFFF66">通用控件的封裝類</font></H2>
      
<P>WTL有許多控件的封裝類對你應該比較熟悉,因為它們使用與MFC相同(或幾乎相同)的名字。控件的方法的命名也和MFC一樣,所以你可以參照MFC的文檔使用這些WTL的封裝類。不足之處是F12鍵不能方便地跳到類的定義代碼處。</P>
      
<P>下面是Windows內(nèi)建控件的封裝類:</P>
      
<UL>
  <LI>用戶控件: CStatic, CButton, CListBox, CComboBox, CEdit, CScrollBar, CDragListBox
  <LI>通用控件: CImageList, CListViewCtrl (CListCtrl in MFC), CTreeViewCtrl (CTreeCtrl 
    in MFC), CHeaderCtrl, CToolBarCtrl, CStatusBarCtrl, CTabCtrl, CToolTipCtrl, 
    CTrackBarCtrl (CSliderCtrl in MFC), CUpDownCtrl (CSpinButtonCtrl in MFC), 
    CProgressBarCtrl, CHotKeyCtrl, CAnimateCtrl, CRichEditCtrl, CReBarCtrl, CComboBoxEx, 
    CDateTimePickerCtrl, CMonthCalendarCtrl, CIPAddressCtrl
  <LI>MFC中沒有的封裝類: CPagerCtrl, CFlatScrollBar, CLinkCtrl (clickable hyperlink, 
    available on XP only)</LI>
</UL>
<P>還有一些是WTL特有的類:CBitmapButton, CCheckListViewCtrl (帶檢查選擇框的list控件), CTreeViewCtrlEx 
  和 CTreeItem (通常一起使用, CTreeItem 封裝了HTREEITEM), CHyperLink (類似于網(wǎng)頁上的超鏈接對象,支持所有操作系統(tǒng))<br>
</P>
      
<P>需要注意得一點是大多數(shù)封裝類都是基于CWindow接口的,和CWindow一樣,它們封裝了HWND并對控件的消息進行了封裝(例如,CListBox::GetCurSel()封裝了LB_GETCURSEL消息)。所以和CWindow一樣,創(chuàng)建一個控件的封裝對象并將它與已經(jīng)存在的控件關聯(lián)起來只占用很少的資源,當然也和CWindow一樣,控件封裝對象銷毀時不銷毀控件本身。也有一些例外,如CBitmapButton, 
  CCheckListViewCtrl和CHyperLink。</P>
      
<P>由于這些文章定位于有經(jīng)驗的MFC程序員,我就不浪費時間介紹這些封裝類,它們和MFC相應的控件封裝相似。當然我會介紹WTL的新類:CBitmapButtonCBitmapButton類與MFC的同名類有很大的不同,CHyperLink則完全是新事物。
</P>
      
<H2><A name=appwizard></A><font color="#FFFF66">用應用程序向導生成基于對話框的程序</font></H2>
      
<P>運行VC并啟動WTL應用向導,相信你在做時鐘程序時已經(jīng)用過它了,為我們的新程序命名為ControlMania1。在向導的第一頁選擇基于對話框的應用,還要選擇是使用模式對話框還是使用非模式對話框。它們有很大的區(qū)別,我將在第五章介紹它們的不同,現(xiàn)在我們選擇簡單的一種:模式對話框。如下所示選擇模式對話框和生成CPP文件選項:</P>
      
<P><IMG height=387 alt=" [AppWizard page 1 - 21K] " 
      src="images/appwiz41.png" 
      width=477 align=bottom border=0></P>
      
<P>第二頁上所有的選項只對主窗口是框架窗口時有意義,現(xiàn)在它們是不可用狀態(tài),單擊&quot;Finish&quot;,再單擊&quot;OK&quot;完成向導。</P>
<p>正如你想的那樣,向導生成的基于對話框程序的代碼非常簡單。_tWinMain()函數(shù)在ControlMania1.cpp中,下面是重要的部分:</p>
<PRE><SPAN class=cpp-keyword><font color="#0033FF">int</font></SPAN><font color="#0033FF"> WINAPI _tWinMain ( 
    HINSTANCE hInstance, HINSTANCE <SPAN class=cpp-comment>/*hPrevInstance*/</SPAN>, 
    LPTSTR lpstrCmdLine, <SPAN class=cpp-keyword>int</SPAN> nCmdShow )
{
    HRESULT hRes = ::CoInitialize(NULL);
 
    AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES);
 
    hRes = _Module.Init(NULL, hInstance);
 
    <SPAN class=cpp-keyword>int</SPAN> nRet = <SPAN class=cpp-literal>0</SPAN>;
    <SPAN class=cpp-comment>// BLOCK: Run application</SPAN>
    {
        CMainDlg dlgMain;
        nRet = dlgMain.DoModal();
    }
 
    _Module.Term();
    ::CoUninitialize();
    <SPAN class=cpp-keyword>return</SPAN> nRet;
}</font></PRE>
      
<P>代碼首先初始化COM并創(chuàng)建一個單線程公寓,這對于使用ActiveX控件的對話框是有必要得,接著調(diào)用WTL的功能函數(shù)AtlInitCommonControls(),這個函數(shù)是對InitCommonControlsEx()的封裝。全局對象_Module被初始化,主對話框顯示出來。(注意所有使用DoModal()創(chuàng)建的ATL對話框實際上是模式的,這不像MFC,MFC的所有對話框是非模式的,MFC通過代碼禁用對話框的父窗口來模擬模式對話框的行為)最后,_Module和COM被釋放,DoModal()的返回值被用來作為程序的結束碼。</P>
      
<BLOCKQUOTE> 
  <P>將CMainDlg變量放在一個區(qū)塊中是很重要的,因為CMainDlg可能有成員使用了ATL和WTL的特性,這些成員在析構時也會用到ATL/WTL的特性,如果不使用區(qū)塊,CMainDlg將在_Module.Term()(這個函數(shù)完成ATL/WTL的清理工作)調(diào)用之后調(diào)用析構函數(shù)銷毀自己(和成員),并試圖使用ATL/WTL的特性,這將導致程序出現(xiàn)診斷錯誤崩潰。(WTL 
    3的向導生成的代碼沒有使用區(qū)塊,使得我的一些程序在結束時崩潰)</P>
</BLOCKQUOTE>
      
<P>你現(xiàn)在可以編譯并運行這個程序,盡管它只是一個簡陋的對話框:</P>
      
<P><IMG height=187 alt=" [Bare dialog - 4K] " 
      src="images/bareapp4.png" 
      width=287 align=bottom border=0></P>
      
<P>CMainDlg 的代碼處理了WM_INITDIALOG, WM_CLOSE和三個按鈕的消息,如果你喜歡可以瀏覽一下這些代碼,你應該能夠看懂CMainDlg的聲明,它的消息映射和它的消息處理函數(shù)。</P>
<p>這個簡單的工程還演示了如何將控件和變量聯(lián)系起來,這個程序使用了幾個控件。在接下來的討論中你可以隨時回來查看這些圖表。</p>
<P><IMG height=227 alt=" [Add'l controls - 6K] " 
      src="images/cm1ctrls4.png" 
      width=507 align=bottom border=0></P>
      
<P>由于程序使用了list view控件,所以對AtlInitCommonControls()的調(diào)用需要作些修改,將其改為:</P>
<PRE>    <font color="#0033FF">AtlInitCommonControls ( ICC_WIN95_CLASSES );</font></PRE>
      
<P>雖然這樣注冊的控件類比我們用到的多,但是當我們向對話框添加不同類型的控件時就不用隨時記得添加名為ICC_*的常量(譯者加:以ICC_開頭的一系列常量)。</P>
<H2><A name=usingwrap></A><font color="#FFFF66">使用控件的封裝類</font></H2>
      
<P>有幾種方法將一個變量和控件建立關聯(lián),可以使用CWindows(或其它Window接口類,如CListViewCtrl),也可以使用CWindowImpl的派生類。如果只是需要一個臨時變量就用CWindow,如果需要子類化一個控件并處理發(fā)送給該控件的消息就需要使用CWindowImpl。</P>
      <H3><A name=atl1></A><font color="#FFFF66">ATL 方式 1 - 連接一個CWindow對象</font></H3>
      最簡單的方法是聲明一個CWindow或其它window接口類,然后調(diào)用Attach()方法,還可以使用CWindow的構造函數(shù)直接將變量與控件的HWND關聯(lián)起來。 
<p>下面的代碼三種方法將變量和一個list控件聯(lián)系起來:</p>
<PRE><font color="#0033FF">HWND hwndList = GetDlgItem(IDC_LIST);
CListViewCtrl wndList1 (hwndList);  <SPAN class=cpp-comment>// use constructor</SPAN>
CListViewCtrl wndList2, wndList3;
 
  wndList2.Attach ( hwndList );     <SPAN class=cpp-comment>// use Attach method</SPAN>
  wndList3 = hwndList;              <SPAN class=cpp-comment>// use assignment operator</SPAN></font></PRE>
      
<P>記住CWindow的析構函數(shù)并不銷毀控件窗口,所以在變量超出作用域時不需要將其脫離控件,如果你愿意的話還可以將其作為成員變量使用:你可以在OnInitDialog()處理函數(shù)中建立變量與控件的聯(lián)系。</P>
      <H3><A name=atl2></A><font color="#FFFF66">ATL 方式 2 - 包容器窗口(CContainedWindow)</font></H3>
      
<P>CContainedWindow是介于CWindow和CWindowImpl之間的類,它可以子類化控件,在控件的父窗口中處理控件的消息,這使得所有的消息處理都放在對話框類中,不需要為為每個控件生成一個單獨的CWindowImpl派生類對象。需要注意的是不能用CContainedWindow 
  處理WM_COMMAND, WM_NOTIFY和其他通知消息,因為這些消息是發(fā)給控件的父窗口的。</P>
<p>CContainedWindow只是CContainedWindowT定義的一個數(shù)據(jù)類型,CContainedWindowT才是真正的類,它是一個模板類,使用window接口類的類名作為模板參數(shù)。這個特殊的CContainedWindowT&lt;CWindow&gt;和CWindow功能一樣, 
  <br>
  CContainedWindow只是它定義的一個簡寫名稱,要使用不同的window接口類只需將該類的類名作為模板參數(shù)就行了,例如CContainedWindowT&lt;CListViewCtrl&gt;。</p>
<p>鉤住一個CContainedWindow對象需要做四件事:</p>
<OL>
        
  <LI>在對話框中創(chuàng)建一個CContainedWindowT 成員變量。
  <LI>將消息處理添加到對話框消息映射的ALT_MSG_MAP小節(jié)。 
  <LI>在對話框的構造函數(shù)中調(diào)用CContainedWindowT 構造函數(shù)并告訴它哪個ALT_MSG_MAP小節(jié)的消息需要處理。 
  <LI>在OnInitDialog()中調(diào)用CContainedWindowT::SubclassWindow()
    方法與控件建立關聯(lián)。</LI>
</OL>
      
<P>在ControlMania1中,我對三個按鈕分別使用了一個CContainedWindow,對話框處理發(fā)送到每一個按鈕的WM_SETCURSOR消息,并改變鼠標指針形狀。</P>
<p>現(xiàn)在仔細看看這一步,首先,我們在CMainDlg中添加了CContainedWindow成員。</p>
<PRE><SPAN class=cpp-keyword><font color="#0033FF">class</font></SPAN><font color="#0033FF"> CMainDlg : <SPAN class=cpp-keyword>public</SPAN> CDialogImpl&lt;CMainDlg&gt;
{
<SPAN class=cpp-comment>// ...</SPAN>
<SPAN class=cpp-keyword>protected</SPAN>:
    CContainedWindow m_wndOKBtn, m_wndExitBtn;
};</font></PRE>
      
<P>其次,我們添加了ALT_MSG_MAP小節(jié),OK按鈕使用1小節(jié),Exit按鈕使用2小節(jié)。這意味著所有發(fā)送給OK按鈕的消息將由ALT_MSG_MAP(1)小節(jié)處理,所有發(fā)給Exit按鈕的消息將由ALT_MSG_MAP(2)小節(jié)處理。</P>
<PRE><SPAN class=cpp-keyword><font color="#0033FF">class</font></SPAN><font color="#0033FF"> CMainDlg : <SPAN class=cpp-keyword>public</SPAN> CDialogImpl&lt;CMainDlg&gt;
{
<SPAN class=cpp-keyword>public</SPAN>:
    BEGIN_MSG_MAP_EX(CMainDlg)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
        COMMAND_ID_HANDLER(IDOK, OnOK)
        COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
    <B>ALT_MSG_MAP(<SPAN class=cpp-literal>1</SPAN>)
        MSG_WM_SETCURSOR(OnSetCursor_OK)
    ALT_MSG_MAP(<SPAN class=cpp-literal>2</SPAN>)
        MSG_WM_SETCURSOR(OnSetCursor_Exit)</B>
    END_MSG_MAP()
 
    <B>LRESULT OnSetCursor_OK(HWND hwndCtrl, UINT uHitTest, UINT uMouseMsg);
    LRESULT OnSetCursor_Exit(HWND hwndCtrl, UINT uHitTest, UINT uMouseMsg);</B>
};</font></PRE>
      
<P>接著,我們調(diào)用每個CContainedWindow的構造函數(shù),告訴它使用ALT_MSG_MAP的哪個小節(jié)。</P>
<PRE><font color="#0033FF">CMainDlg::CMainDlg() : m_wndOKBtn(<SPAN class=cpp-keyword>this</SPAN>, <SPAN class=cpp-literal>1</SPAN>), 
                       m_wndExitBtn(<SPAN class=cpp-keyword>this</SPAN>, <SPAN class=cpp-literal>2</SPAN>)
{
}</font></PRE>
      
<P>構造函數(shù)的參數(shù)是消息映射鏈的地址和ALT_MSG_MAP的小節(jié)號碼,第一個參數(shù)通常使用this,就是使用對話框自己的消息映射鏈,第二個參數(shù)告訴對象將消息發(fā)給ALT_MSG_MAP的哪個小節(jié)。</P>
<p>最后,我們將每個CContainedWindow對象與控件關聯(lián)起來。</p>
<PRE><font color="#0033FF">LRESULT CMainDlg::OnInitDialog(...)
{
<SPAN class=cpp-comment>// ...</SPAN>
    <SPAN class=cpp-comment>// Attach CContainedWindows to OK and Exit buttons</SPAN>
    m_wndOKBtn.SubclassWindow ( GetDlgItem(IDOK) );
    m_wndExitBtn.SubclassWindow ( GetDlgItem(IDCANCEL) );
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av影视在线观看| 欧美性生交片4| 天堂一区二区在线| 国产精品卡一卡二卡三| 欧美一二区视频| 欧美性大战久久久久久久蜜臀 | 亚洲免费av高清| 久久午夜色播影院免费高清| 欧美日韩国产电影| 91在线视频网址| 国产剧情av麻豆香蕉精品| 亚洲1区2区3区4区| 亚洲欧美视频在线观看| 国产三级一区二区| 精品国内片67194| 欧美嫩在线观看| 欧美性三三影院| 在线中文字幕不卡| 97精品国产97久久久久久久久久久久| 国产一区二区三区观看| 免费av网站大全久久| 天天综合网 天天综合色| 一区二区免费视频| 亚洲男同性恋视频| 国产精品的网站| 国产精品视频一区二区三区不卡| 久久天堂av综合合色蜜桃网| 亚洲精品在线免费观看视频| 日韩欧美一区二区视频| 3751色影院一区二区三区| 欧美福利一区二区| 色狠狠一区二区| 欧美在线不卡视频| 一本大道久久a久久精品综合| av激情成人网| 97精品国产97久久久久久久久久久久| 成人永久看片免费视频天堂| 成熟亚洲日本毛茸茸凸凹| 国产精品18久久久久久vr| 国产精品99久久久久久宅男| 懂色av中文一区二区三区| 成人一级黄色片| jizz一区二区| 一本大道av伊人久久综合| 91福利视频久久久久| 欧美色窝79yyyycom| 欧美日韩精品一区二区三区四区 | 国产凹凸在线观看一区二区| 国产成人一级电影| 成人午夜视频在线| 91蝌蚪porny| 精品视频在线免费观看| 91精品国产综合久久精品麻豆 | 洋洋av久久久久久久一区| 亚洲成人黄色影院| 久久精品国内一区二区三区| 国产一区二区在线看| 成人avav在线| 91精品福利视频| 欧美精品v日韩精品v韩国精品v| 欧美成人vps| 国产精品美女久久久久久久| 亚洲一级二级在线| 久久99精品国产麻豆不卡| 波多野结衣中文一区| 欧美视频在线一区二区三区 | 欧美成人乱码一区二区三区| 国产日韩亚洲欧美综合| 亚洲激情图片一区| 久久国产精品露脸对白| 成人性生交大片免费| 欧美日韩在线播放| 久久综合久色欧美综合狠狠| 自拍偷拍国产精品| 日韩电影在线观看电影| 高清视频一区二区| 欧美精品日日鲁夜夜添| 欧美激情综合在线| 香蕉影视欧美成人| 国产不卡视频一区| 91.com在线观看| 成人欧美一区二区三区黑人麻豆| 午夜精品影院在线观看| 成人黄色电影在线| 欧美一区二区三区电影| 亚洲私人黄色宅男| 精品亚洲porn| 欧美人与禽zozo性伦| 国产精品久久久久久久浪潮网站| 日本亚洲三级在线| 色综合天天性综合| 久久先锋影音av鲁色资源网| 亚洲一二三专区| 成人精品电影在线观看| 日韩一级二级三级精品视频| 亚洲色图.com| 国产成人午夜精品影院观看视频| 在线播放91灌醉迷j高跟美女| 国产精品国产自产拍高清av王其| 美女任你摸久久| 欧美系列在线观看| 《视频一区视频二区| 激情文学综合网| 欧美精品 日韩| 亚洲自拍另类综合| 91小视频免费观看| 日本一区二区三区国色天香| 久久精品国产亚洲aⅴ| 欧美视频第二页| 亚洲欧美日韩国产另类专区| 国产·精品毛片| 久久免费国产精品| 激情久久久久久久久久久久久久久久| 欧美影院午夜播放| 成人免费在线视频观看| 粉嫩av一区二区三区粉嫩| 精品国产乱子伦一区| 久久超碰97中文字幕| 欧美精品在线一区二区| 亚洲国产一区二区视频| 在线精品视频小说1| 有码一区二区三区| 色哟哟欧美精品| 亚洲人吸女人奶水| 91丝袜美腿高跟国产极品老师| 欧美国产精品v| 成人免费观看视频| 国产精品萝li| 99riav一区二区三区| 亚洲视频一区二区在线观看| aaa欧美色吧激情视频| 亚洲色图另类专区| 在线观看不卡视频| 亚洲成人一区二区在线观看| 欧美日本视频在线| 免费精品视频在线| 日韩精品一区二区三区中文不卡| 久久er99精品| 久久视频一区二区| 成人激情av网| 亚洲精品亚洲人成人网在线播放| 99国产欧美另类久久久精品| 亚洲欧美日韩国产综合| 欧美网站一区二区| 免费观看久久久4p| 久久精品日产第一区二区三区高清版 | 中文字幕日韩av资源站| 91日韩精品一区| 亚洲午夜在线观看视频在线| 欧美喷水一区二区| 精品亚洲porn| 亚洲欧洲日韩一区二区三区| 一本色道亚洲精品aⅴ| 亚洲bt欧美bt精品777| 日韩一区二区三区四区| 国产一区二区看久久| 国产精品三级视频| 欧美日韩久久一区| 国产一区二区免费看| 国产精品美女久久久久久久网站| 在线观看区一区二| 精品中文字幕一区二区| 国产精品久久久久久久久久免费看| 一本一本大道香蕉久在线精品 | 成人黄色av电影| 亚洲一区二区视频在线| 日韩欧美一卡二卡| 99久久婷婷国产综合精品| 亚洲国产视频直播| 久久久精品2019中文字幕之3| 99国产精品一区| 日韩和欧美一区二区| 国产精品无码永久免费888| 欧美午夜在线一二页| 国产美女在线观看一区| 亚洲精品欧美激情| 精品久久久影院| 91成人在线精品| 国产成人免费在线视频| 亚洲小少妇裸体bbw| 国产欧美中文在线| 欧美电影在哪看比较好| 成人99免费视频| 美腿丝袜亚洲三区| 中文字幕在线不卡一区二区三区| 7799精品视频| 一本一道波多野结衣一区二区| 久久er99热精品一区二区| 一区二区高清在线| 国产日产欧美一区二区三区| 欧美剧在线免费观看网站| 成人av电影在线网| 精品在线免费观看| 亚洲成av人片在线观看无码| 国产精品久久三| 久久天天做天天爱综合色| 在线成人av影院| 欧美四级电影在线观看| av成人免费在线观看| 精品亚洲成a人|