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

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

?? vc++動態鏈接庫(dll)編程深入淺出(三).htm

?? VC++動態鏈接庫編程之基礎慨念-與編程講解深入淺出 對原理不清的同學有一定的幫助
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
            href="http://www.study888.com/User/User_Favorite.asp?Action=Add&ChannelID=25&InfoID=125869" 
            target=_blank>加入收藏</A>】【<A 
            href="http://www.study888.com/computer/SendMail.asp?ArticleID=125869" 
            target=_blank>告訴好友</A>】【<A 
            href="http://www.study888.com/computer/Print.asp?ArticleID=125869" 
            target=_blank>打印此文</A>】【<A 
            href="javascript:window.close();">關閉窗口</A>】 </TD></TR><!--文章標題下部廣告代碼開始-->
        <TR>
          <TD align=middle colSpan=2>
            <SCRIPT src=""></SCRIPT>
          </TD></TR><!--文章標題下部廣告代碼結束-->
        <TR>
          <TD background=VC++動態鏈接庫(DLL)編程深入淺出(三).files/ad_bx1.gif colSpan=2 
          height=6></TD></TR>
        <TR>
          <TD colSpan=6></TD></TR>
        <TR>
          <TD id=fontzoom style="WORD-BREAK: break-all" vAlign=top colSpan=2 
          height=600>
            <SCRIPT src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/wen-ad-300.js"></SCRIPT>
            第4節我們對非MFC 
            DLL進行了介紹,這一節將詳細地講述MFC規則DLL的創建與使用技巧。<BR><BR>  另外,自從本文開始連載后,收到了一些讀者的e-mail。有的讀者提出了一些問題,筆者將在本文的最后一次連載中選取其中的典型問題進行解答。由于時間的關系,對于讀者朋友的來信,筆者暫時不能一一回復,還望海涵!由于筆者的水平有限,文中難免有錯誤和紕漏,也熱誠歡迎讀者朋友不吝指正!<BR><BR><BR>  <STRONG>5. 
            MFC規則DLL</STRONG><BR><BR>  <STRONG>5.1 
            概述</STRONG><BR><BR>  MFC規則DLL的概念體現在兩方面:<BR><BR>  (1) 
            它是MFC的<BR><BR>  “是MFC的”意味著可以在這種DLL的內部使用MFC;<BR><BR>  (2) 
            它是規則的<BR><BR>  “是規則的”意味著它不同于MFC擴展DLL,在MFC規則DLL的內部雖然可以使用MFC,但是其與應用程序的接口不能是MFC。而MFC擴展DLL與應用程序的接口可以是MFC,可以從MFC擴展DLL中導出一個MFC類的派生類。<BR><BR>  Regular 
            DLL能夠被所有支持DLL技術的語言所編寫的應用程序調用,當然也包括使用MFC的應用程序。在這種動態連接庫中,包含一個從CWinApp繼承下來的類,DllMain函數則由MFC自動提供。<BR><BR>  Regular 
            DLL分為兩類:<BR><BR>  (1)靜態鏈接到MFC 
            的規則DLL<BR><BR>  靜態鏈接到MFC的規則DLL與MFC庫(包括MFC擴展 
            DLL)靜態鏈接,將MFC庫的代碼直接生成在.dll文件中。在調用這種DLL的接口時,MFC使用DLL的資源。因此,在靜態鏈接到MFC 
            的規則DLL中不需要進行模塊狀態的切換。<BR><BR>  使用這種方法生成的規則DLL其程序較大,也可能包含重復的代碼。<BR><BR>  (2)動態鏈接到MFC 
            的規則DLL<BR><BR>  動態鏈接到MFC 的規則DLL 可以和使用它的可執行文件同時動態鏈接到 MFC DLL 和任何MFC擴展 
            DLL。在使用了MFC共享庫的時候,默認情況下,MFC使用主應用程序的資源句柄來加載資源模板。這樣,當DLL和應用程序中存在相同ID的資源時(即所謂的資源重復問題),系統可能不能獲得正確的資源。因此,對于共享MFC 
            DLL的規則DLL,我們必須進行模塊切換以使得MFC能夠找到正確的資源模板。<BR>我們可以在Visual 
            C++中設置MFC規則DLL是靜態鏈接到MFC DLL還是動態鏈接到MFC DLL。如圖8,依次選擇Visual C++的project 
            -&gt; Settings -&gt; General菜單或選項,在Microsoft Foundation 
            Classes中進行設置。<BR>
            <P></P>
            <P align=center><IMG alt="" 
            src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/20051121084943348.jpg" 
            border=0></P>
            <P align=center>圖8 設置動態/靜態鏈接MFC DLL</P>
            <P>  <STRONG>5.2 
            MFC規則DLL的創建</STRONG><BR><BR>  我們來一步步講述使用MFC向導創建MFC規則DLL的過程,首先新建一個project,如圖9,選擇project的類型為MFC 
            AppWizard(dll)。點擊OK進入如圖10所示的對話框。<BR></P>
            <P align=center><IMG alt="" 
            src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/20051121084944136.jpg" 
            border=0></P>
            <P align=center>圖9 MFC DLL工程的創建</P>
            <P>  圖10所示對話框中的1區選擇MFC DLL的類別。<BR><BR>  2區選擇是否支持automation(自動化)技術, 
            automation 允許用戶在一個應用程序中操縱另外一個應用程序或組件。例如,我們可以在應用程序中利用 Microsoft Word 
            或Microsoft 
            Excel的工具,而這種使用對用戶而言是透明的。自動化技術可以大大簡化和加快應用程序的開發。<BR><BR>  3區選擇是否支持Windows 
            Sockets,當選擇此項目時,應用程序能在 TCP/IP 網絡上進行通信。 
            CWinApp派生類的InitInstance成員函數會初始化通訊端的支持,同時工程中的StdAfx.h文件會自動include 
            &lt;AfxSock.h&gt;頭文件。<BR>添加socket通訊支持后的InitInstance成員函數如下:<BR></P>
            <P></P>
            <P class=code>BOOL 
            CRegularDllSocketApp::InitInstance()<BR><BR>{<BR><BR>if 
            (!AfxSocketInit())<BR><BR>{<BR><BR>AfxMessageBox(IDP_SOCKETS_INIT_FAILED);<BR><BR>return 
            FALSE;<BR><BR>}<BR><BR><BR>return TRUE;<BR><BR>}</P>
            <P><BR>  4區選擇是否由MFC向導自動在源代碼中添加注釋,一般我們選擇“Yes,please”。<BR></P>
            <P align=center><IMG alt="" 
            src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/20051121084944504.jpg" 
            border=0></P>
            <P align=center>圖10 MFC DLL的創建選項</P>
            <P>  <STRONG>5.3 一個簡單的MFC規則DLL</STRONG><BR><BR>  這個DLL的例子(屬于靜態鏈接到MFC 
            的規則DLL)中提供了一個如圖11所示的對話框。<BR></P>
            <P align=center><IMG alt="" 
            src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/20051121084944732.jpg" 
            border=0></P>
            <P align=center>圖11 MFC規則DLL例子</P>
            <P>  在DLL中添加對話框的方式與在MFC應用程序中是一樣的。<BR><BR>  在圖11所示DLL中的對話框的Hello按鈕上點擊時將MessageBox一個“Hello,pconline的網友”對話框,下面是相關的文件及源代碼,其中刪除了MFC向導自動生成的絕大多數注釋</P>
            <P>第一組文件:CWinApp繼承類的聲明與實現<BR></P>
            <P></P>
            <P class=code>// RegularDll.h : main header file for the REGULARDLL 
            DLL<BR><BR><BR><BR>#if 
            !defined(AFX_REGULARDLL_H__3E9CB22B_588B_4388_B778_B3416ADB79B3__INCLUDED_)<BR><BR>#define 
            AFX_REGULARDLL_H__3E9CB22B_588B_4388_B778_B3416ADB79B3__INCLUDED_<BR><BR><BR><BR>#if 
            _MSC_VER &gt; 1000<BR><BR>#pragma once<BR><BR>#endif // _MSC_VER 
            &gt; 1000<BR><BR><BR><BR>#ifndef __AFXWIN_H__<BR><BR>#error include 
            'stdafx.h' before including this file for 
            PCH<BR><BR>#endif<BR><BR>#include "resource.h" // main 
            symbols<BR><BR><BR><BR>class CRegularDllApp : public 
            CWinApp<BR><BR>{<BR><BR>public:<BR><BR>CRegularDllApp();<BR><BR><BR><BR>DECLARE_MESSAGE_MAP()<BR><BR>};<BR><BR>#endif 
            <BR><BR><BR><BR>// RegularDll.cpp : Defines the initialization 
            routines for the DLL.<BR><BR><BR><BR>#include 
            "stdafx.h"<BR><BR>#include "RegularDll.h"<BR><BR><BR><BR>#ifdef 
            _DEBUG<BR><BR>#define new DEBUG_NEW<BR><BR>#undef 
            THIS_FILE<BR><BR>static char THIS_FILE[] = 
            __FILE__;<BR><BR>#endif<BR><BR><BR><BR>BEGIN_MESSAGE_MAP(CRegularDllApp, 
            CWinApp)<BR><BR>END_MESSAGE_MAP()<BR><BR><BR><BR>/////////////////////////////////////////////////////////////////////////////<BR><BR>// 
            CRegularDllApp 
            construction<BR><BR><BR><BR>CRegularDllApp::CRegularDllApp()<BR><BR>{<BR><BR>}<BR><BR><BR><BR>/////////////////////////////////////////////////////////////////////////////<BR><BR>// 
            The one and only CRegularDllApp object<BR><BR>CRegularDllApp 
            theApp;</P>
            <P><BR>  分析:<BR><BR>  在這一組文件中定義了一個繼承自CWinApp的類CRegularDllApp,并同時定義了其的一個實例theApp。乍一看,您會以為它是一個MFC應用程序,因為MFC應用程序也包含這樣的在工程名后添加“App”組成類名的類(并繼承自CWinApp類),也定義了這個類的一個全局實例theApp。<BR>我們知道,在MFC應用程序中CWinApp取代了SDK程序中WinMain的地位,SDK程序WinMain所完成的工作由CWinApp的三個函數完成:<BR></P>
            <P class=code>virtual BOOL InitApplication( );<BR><BR>virtual BOOL 
            InitInstance( );<BR><BR>virtual BOOL Run( ); //傳說中MFC程序的“活水源頭”</P>
            <P><BR>  但是MFC規則DLL并不是MFC應用程序,它所繼承自CWinApp的類不包含消息循環。這是因為,MFC規則DLL不包含CWinApp::Run機制,主消息泵仍然由應用程序擁有。如果DLL 
            生成無模式對話框或有自己的主框架窗口,則應用程序的主消息泵必須調用從DLL 
            導出的函數來調用PreTranslateMessage成員函數。<BR><BR>  另外,MFC規則DLL與MFC 
            應用程序中一樣,需要將所有 DLL中元素的初始化放到InitInstance 成員函數中。<BR><BR>  第二組文件 
            自定義對話框類聲明及實現(點擊查看<A 
            href="http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/acc/05-09-22-vc-1.txt"><U><FONT 
            color=#0000ff>附件</FONT></U></A>)<BR><BR>  分析:<BR><BR>  這一部分的編程與一般的應用程序根本沒有什么不同,我們照樣可以利用MFC類向導來自動為對話框上的控件添加事件。MFC類向導照樣會生成類似ON_BN_CLICKED(IDC_HELLO_BUTTON, 
            OnHelloButton)的消息映射宏。<BR><BR>  第三組文件 DLL中的資源文件<BR></P>
            <P class=code>//{{NO_DEPENDENCIES}}<BR><BR>// Microsoft Developer 
            Studio generated include file.<BR><BR>// Used by 
            RegularDll.rc<BR><BR>//<BR><BR>#define IDD_DLL_DIALOG 
            1000<BR><BR>#define IDC_HELLO_BUTTON 1000</P>
            <P><BR>  分析:<BR><BR>  在MFC規則DLL中使用資源也與在MFC應用程序中使用資源沒有什么不同,我們照樣可以用Visual 
            C++的資源編輯工具進行資源的添加、刪除和屬性的更改。<BR><BR>  第四組文件 MFC規則DLL接口函數<BR></P>
            <P class=code>#include "StdAfx.h"<BR><BR>#include 
            "DllDialog.h"<BR><BR><BR>extern "C" __declspec(dllexport) void 
            ShowDlg(void) <BR><BR>{<BR><BR>CDllDialog 
            dllDialog;<BR><BR>dllDialog.DoModal();<BR><BR>}</P>
            <P><BR>  分析:<BR><BR>  這個接口并不使用MFC,但是在其中卻可以調用MFC擴展類CdllDialog的函數,這體現了“規則”的概類。<BR><BR>  與非MFC 
            DLL完全相同,我們可以使用__declspec(dllexport)聲明或在.def中引出的方式導出MFC規則DLL中的接口。<BR><STRONG>5.4 
            MFC規則DLL的調用<BR><BR></STRONG>  筆者編寫了如圖12的對話框MFC程序(下載本工程<A 
            href="http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/acc/RegularDllCall.zip"><U><FONT 
            color=#0000ff>附件</FONT></U></A>)來調用5.3節的MFC規則DLL,在這個程序的對話框上點擊“調用DLL”按鈕時彈出5.3節MFC規則DLL中的對話框。<BR></P>
            <P align=center><IMG alt="" 
            src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/20051121084944904.jpg" 
            border=0></P>
            <P align=center>圖12 MFC規則DLL的調用例子</P>
            <P>  下面是“調用DLL”按鈕單擊事件的消息處理函數:<BR></P>
            <P class=code>void CRegularDllCallDlg::OnCalldllButton() 
            <BR><BR>{<BR><BR>typedef void (*lpFun)(void);<BR><BR><BR>HINSTANCE 
            hDll; //DLL句柄 <BR><BR>hDll = 
            LoadLibrary("RegularDll.dll");<BR><BR>if 
            (NULL==hDll)<BR><BR>{<BR><BR>MessageBox("DLL加載失敗");<BR><BR>}<BR><BR><BR><BR>lpFun 
            addFun; //函數指針<BR><BR>lpFun pShowDlg = 
            (lpFun)GetProcAddress(hDll,"ShowDlg");<BR><BR>if 
            (NULL==pShowDlg)<BR><BR>{<BR><BR>MessageBox("DLL中函數尋找失敗"); 
            <BR><BR>}<BR><BR>pShowDlg();<BR><BR>}</P>
            <P><BR>  上述例子中給出的是顯示調用的方式,可以看出,其調用方式與第4節中非MFC 
            DLL的調用方式沒有什么不同。<BR>我們照樣可以在EXE程序中隱式調用MFC規則DLL,只需要將DLL工程生成的.lib文件和.dll文件拷入當前工程所在的目錄,并在RegularDllCallDlg.cpp文件(圖12所示對話框類的實現文件)的頂部添加:<BR></P>
            <P class=code>#pragma comment(lib,"RegularDll.lib")<BR><BR>void 
            ShowDlg(void); </P>
            <P><BR>  并將void CRegularDllCallDlg::OnCalldllButton() 改為:<BR></P>
            <P class=code>void CRegularDllCallDlg::OnCalldllButton() 
            <BR><BR>{<BR><BR>ShowDlg();<BR><BR>}</P>
            <P><BR><BR>  <STRONG>5.5 共享MFC 
            DLL的規則DLL的模塊切換</STRONG><BR><BR>  應用程序進程本身及其調用的每個DLL模塊都具有一個全局唯一的HINSTANCE句柄,它們代表了DLL或EXE模塊在進程虛擬空間中的起始地址。進程本身的模塊句柄一般為0x400000,而DLL模塊的缺省句柄為0x10000000。如果程序同時加載了多個DLL,則每個DLL模塊都會有不同的HINSTANCE。應用程序在加載DLL時對其進行了重定位。 
            <BR><BR>  共享MFC 
            DLL(或MFC擴展DLL)的規則DLL涉及到HINSTANCE句柄問題,HINSTANCE句柄對于加載資源特別重要。EXE和DLL都有其自己的資源,而且這些資源的ID可能重復,應用程序需要通過資源模塊的切換來找到正確的資源。如果應用程序需要來自于DLL的資源,就應將資源模塊句柄指定為DLL的模塊句柄;如果需要EXE文件中包含的資源,就應將資源模塊句柄指定為EXE的模塊句柄。<BR><BR>  這次我們創建一個動態鏈接到MFC 
            DLL的規則DLL(下載本工程<A 
            href="http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/acc/SharedDll.zip"><U><FONT 
            color=#0000ff>附件</FONT></U></A>),在其中包含如圖13的對話框。<BR></P>
            <P align=center><IMG alt="" 
            src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/20051121084944747.jpg" 
            border=0></P>
            <P align=center>圖13 DLL中的對話框</P>
            <P>  另外,在與這個DLL相同的工作區中生成一個基于對話框的MFC程序,其對話框與圖12完全一樣。但是在此工程中我們另外添加了一個如圖14的對話框。<BR></P>
            <P align=center><IMG alt="" 
            src="VC++動態鏈接庫(DLL)編程深入淺出(三).files/20051121084944202.jpg" 
            border=0></P>
            <P align=center>圖14 EXE中的對話框</P>
            <P>  圖13和圖14中的對話框除了caption不同(以示區別)以外,其它的都相同。<BR>尤其值得特別注意,在DLL和EXE中我們對圖13和圖14的對話框使用了相同的資源ID=2000,在DLL和EXE工程的resource.h中分別有如下的宏:<BR></P>
            <P></P>
            <P class=code>//DLL中對話框的ID<BR><BR>#define IDD_DLL_DIALOG 
            2000<BR><BR><BR>//EXE中對話框的ID<BR><BR>#define IDD_EXE_DIALOG 2000</P>
            <P><BR>  與5.3節靜態鏈接MFC 
            DLL的規則DLL相同,我們還是在規則DLL中定義接口函數ShowDlg,原型如下:<BR></P>
            <P class=code>#include "StdAfx.h"<BR><BR>#include 
            "SharedDll.h"<BR><BR>void ShowDlg(void)<BR><BR>{ <BR><BR>CDialog 
            dlg(IDD_DLL_DIALOG); 
            //打開ID為2000的對話框<BR><BR>dlg.DoModal();<BR><BR>}</P>
            <P><BR>  而為應用工程主對話框的“調用DLL”的單擊事件添加如下消息處理函數:<BR></P>
            <P class=code>void CSharedDllCallDlg::OnCalldllButton() 
            <BR><BR>{<BR><BR>ShowDlg();<BR><BR>}</P>
            <P><BR>  我們以為單擊“調用DLL”會彈出如圖13所示DLL中的對話框,可是可怕的事情發生了,我們看到是圖14所示EXE中的對話框!<BR><BR>  <STRONG>驚訝?</STRONG><BR><BR>  產生這個問題的根源在于應用程序與MFC規則DLL共享MFC 
            DLL(或MFC擴展DLL)的程序總是默認使用EXE的資源,我們必須進行資源模塊句柄的切換,其實現方法有三:<BR><BR>  方法一 
            在DLL接口函數中使用:<BR></P>
            <P class=code>AFX_MANAGE_STATE(AfxGetStaticModuleState());</P>
            <P>我們將DLL中的接口函數ShowDlg改為:<BR></P>
            <P class=code>void ShowDlg(void)<BR><BR>{ 
            <BR><BR>//方法1:在函數開始處變更,在函數結束時恢復<BR><BR>//將AFX_MANAGE_STATE(AfxGetStaticModuleState());作為接口函數的第一//條語句進行模塊狀態切換<BR><BR>AFX_MANAGE_STATE(AfxGetStaticModuleState());<BR><BR><BR>CDialog 
            dlg(IDD_DLL_DIALOG);//打開ID為2000的對話框<BR><BR>dlg.DoModal();<BR><BR>}</P>
            <P><BR>  這次我們再點擊EXE程序中的“調用DLL”按鈕,彈出的是DLL中的如圖13的對話框!嘿嘿,彈出了正確的對話框資源。<BR><BR>AfxGetStaticModuleState是一個函數,其原型為:<BR></P>
            <P class=code>AFX_MODULE_STATE* AFXAPI AfxGetStaticModuleState( 
            );</P>
            <P><BR>  該函數的功能是在棧上(這意味著其作用域是局部的)創建一個AFX_MODULE_STATE類(模塊全局數據也就是模塊狀態)的實例,對其進行設置,并將其指針pModuleState返回。<BR><BR>AFX_MODULE_STATE類的原型如下:<BR></P>
            <P class=code>// AFX_MODULE_STATE (global data for a 
            module)<BR><BR>class AFX_MODULE_STATE : public 
            CNoTrackObject<BR><BR>{<BR><BR>public:<BR><BR>#ifdef 
            _AFXDLL<BR><BR>AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, 
            DWORD dwVersion);<BR><BR>AFX_MODULE_STATE(BOOL bDLL, WNDPROC 
            pfnAfxWndProc, DWORD dwVersion,BOOL 
            bSystem);<BR><BR>#else<BR><BR>AFX_MODULE_STATE(BOOL 
            bDLL);<BR><BR>#endif<BR><BR>~AFX_MODULE_STATE();<BR><BR><BR>CWinApp* 
            m_pCurrentWinApp;<BR><BR>HINSTANCE 
            m_hCurrentInstanceHandle;<BR><BR>HINSTANCE 
            m_hCurrentResourceHandle;<BR><BR>LPCTSTR 
            m_lpszCurrentAppName;<BR><BR><BR>… //省略后面的部分<BR><BR>}</P>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品国产精品毛片| 精品国产污网站| 国产.欧美.日韩| 国产91精品久久久久久久网曝门| 国产精品一二三在| 国产精品一品二品| 99精品欧美一区二区三区小说| 国产精品一区二区免费不卡 | 日韩欧美激情四射| 色婷婷激情一区二区三区| 欧美午夜精品久久久久久孕妇| 欧美日韩一级大片网址| 欧美精品一区二区三区很污很色的| 欧美成人高清电影在线| 亚洲午夜久久久| 蜜臀久久久久久久| 亚洲免费在线观看视频| 午夜av电影一区| 国产精品一区久久久久| 91一区二区三区在线播放| 色综合天天狠狠| 精品日产卡一卡二卡麻豆| 自拍偷在线精品自拍偷无码专区| 亚洲一区二区欧美日韩| 福利电影一区二区| 日韩一区二区三区免费看| 亚洲蜜臀av乱码久久精品| 国产一区二区三区免费观看| 91精品国产综合久久精品性色| 国产精品久久久久影院亚瑟 | 欧美美女喷水视频| 欧美激情一区二区在线| 免费成人av在线| 欧美日韩一区三区四区| 一区二区三区国产豹纹内裤在线 | 久久久久久麻豆| 麻豆精品视频在线观看视频| 欧美午夜一区二区三区| 亚洲精品自拍动漫在线| 色伊人久久综合中文字幕| 亚洲日本va在线观看| 成人精品在线视频观看| 亚洲人成在线观看一区二区| 99re视频精品| 亚洲五码中文字幕| 91精品午夜视频| 精品一区二区在线观看| xf在线a精品一区二区视频网站| 国产一本一道久久香蕉| 中文字幕欧美日本乱码一线二线| 高清在线成人网| 亚洲老司机在线| 欧美一级久久久久久久大片| 国产美女视频一区| 亚洲人成人一区二区在线观看| 欧美性色黄大片| 久久成人av少妇免费| 国产亚洲短视频| 91精品办公室少妇高潮对白| 美女视频免费一区| 亚洲品质自拍视频网站| 91精品国产一区二区三区蜜臀| 国产精选一区二区三区| 亚洲一区二区不卡免费| 久久婷婷色综合| 欧美肥妇bbw| 一本到不卡精品视频在线观看| 九一久久久久久| 久久精品视频一区| 日韩欧美一级片| 欧美专区亚洲专区| 成人av在线播放网站| 久久se精品一区二区| 一区二区三区在线播放| 日韩久久免费av| 日本韩国欧美在线| 91社区在线播放| 国产91色综合久久免费分享| 激情成人综合网| 久久成人免费电影| 日本欧美一区二区| 日本最新不卡在线| 午夜精品久久久久久不卡8050 | 日韩电影在线观看一区| 亚洲综合在线电影| 一区二区三区四区视频精品免费 | 国内成人自拍视频| 国产一区二区成人久久免费影院 | 亚洲精品一区二区三区福利| 欧美欧美欧美欧美| 欧美一区二区三区的| 精品福利二区三区| 国产精品久久久久天堂| 国产欧美精品一区二区三区四区| 精品福利一二区| 中文字幕在线免费不卡| 亚洲另类中文字| 精品一区二区三区视频在线观看| 国产一区二区三区四区五区美女| 成人a级免费电影| 91久久人澡人人添人人爽欧美| 欧美精品丝袜中出| 国产亚洲精品aa| 一区二区三区日本| 国内精品久久久久影院一蜜桃| 91免费观看视频| 精品处破学生在线二十三| 国产精品久久福利| 日日摸夜夜添夜夜添精品视频| 久久国产人妖系列| 欧美在线你懂得| 成人欧美一区二区三区小说| 久久精品国产秦先生| 91精彩视频在线| 综合电影一区二区三区 | 曰韩精品一区二区| 国产伦理精品不卡| 91精品国产欧美一区二区18| 亚洲青青青在线视频| 风流少妇一区二区| 国产丝袜在线精品| 韩国女主播成人在线观看| 欧美精品在线一区二区三区| 18成人在线视频| 成人性生交大片| 国产精品久久久久久久久动漫 | 亚洲bt欧美bt精品777| 99久久免费视频.com| 国产精品嫩草影院av蜜臀| 国产揄拍国内精品对白| 精品久久久久一区二区国产| 蜜臀av在线播放一区二区三区| 欧美一区二区三区成人| 日本91福利区| 日韩三区在线观看| 理论片日本一区| 亚洲国产精品v| 91麻豆国产精品久久| 一区二区久久久久| 欧美性视频一区二区三区| 免费成人av在线| 国产农村妇女精品| 欧美日韩激情一区| 国内精品写真在线观看| 中文字幕av一区二区三区高 | 美国精品在线观看| 久久久综合激的五月天| 在线看不卡av| 国产激情精品久久久第一区二区| ㊣最新国产の精品bt伙计久久| 欧美麻豆精品久久久久久| 国产成人精品1024| 丝袜国产日韩另类美女| 国产欧美日韩在线视频| 色中色一区二区| 粉嫩aⅴ一区二区三区四区五区| 亚洲精品免费在线播放| 久久精品人人做人人爽人人| 精品婷婷伊人一区三区三| 国产麻豆成人传媒免费观看| 日本特黄久久久高潮 | 一本色道久久综合亚洲aⅴ蜜桃| 全国精品久久少妇| 亚洲大片在线观看| 亚洲伦在线观看| 亚洲欧美日韩国产综合在线| 国产视频一区在线观看| 欧美美女直播网站| 欧美日韩国产美| 欧美一区二区三区免费观看视频| 欧美日韩国产另类不卡| 91麻豆精品久久久久蜜臀 | 欧美国产激情二区三区| 26uuu国产电影一区二区| 精品欧美乱码久久久久久| 欧美电影免费观看高清完整版在线观看| 精品视频在线免费观看| 欧美精品自拍偷拍| 久久午夜老司机| 国产精品国产三级国产aⅴ原创| 欧美国产精品一区| 18欧美亚洲精品| 日本午夜精品一区二区三区电影 | 国产精品久久久久桃色tv| 亚洲三级在线播放| 青娱乐精品在线视频| 国产大陆精品国产| 色琪琪一区二区三区亚洲区| 99久久夜色精品国产网站| 欧美日韩一级视频| 久久久噜噜噜久噜久久综合| 亚洲欧美另类图片小说| 午夜欧美一区二区三区在线播放| 国产精品一区一区三区| 欧美专区日韩专区| 亚洲天堂网中文字| 韩国三级在线一区| 欧美女孩性生活视频| 国产精品久久久久久久久免费相片| 亚洲国产精品久久一线不卡|