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

kenlistian

厚積薄發(fā). 勤為槳,思為帆

   :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
  73 隨筆 :: 4 文章 :: 22 評論 :: 0 Trackbacks

前言:wxWidgets 是跨平臺的GUI庫,用VC6會影響它的跨平臺性嗎?當(dāng)然不會,我們只是用VC6充當(dāng)編譯器和編輯器,只要編寫代碼時注意不使用Windows相關(guān)的特性,寫出的代碼仍然是跨平臺的,仍然是可以在其它操作系統(tǒng)下(如Linux)使用其它C++編譯器(如GCC)編譯并運(yùn)行的。

為什么用VC6,只不過此文專門針對VC6而已。

創(chuàng)建項(xiàng)目

點(diǎn)擊菜單:File -> New... 創(chuàng)建一個"Win32 Application" Project,項(xiàng)目名稱為"wxProject",點(diǎn)擊OK按鈕,

在下一步的提示中選擇"An Empty Project",點(diǎn)擊Finish按鈕完成項(xiàng)目的創(chuàng)建。

以下的設(shè)置和操作可能有一些繁瑣,但這是一勞永逸的事情。只要你完成了第一個空白工程,以后再需要創(chuàng)建工程時復(fù)制一份就可以了。

 

設(shè)置項(xiàng)目屬性

以下四個編譯配置并不要求都必須設(shè)置好,如果您不打算使用Unicode,那么不用設(shè)置"Win32 Unicode Debug"和"Win32 Unicode Release",如果您僅僅想調(diào)試程序而非發(fā)布,則只需設(shè)置相應(yīng)的"Debug"不用設(shè)置"Release"。最簡單的情況下,只需設(shè)置"Win32 Debug"。

還有一點(diǎn)要注意,您需要事先編譯出相應(yīng)版本的 wxWidgets 庫文件。如"Win32 Unicode Debug"需要 Unicode+Debug 版本的 wxWidgets 庫。(wxWidgets 各種版本庫均可通過 \build\msw\wx.dsw 進(jìn)行編譯)。

點(diǎn)擊菜單:Project -> Settings... 打開項(xiàng)目屬性設(shè)置對話框。

Win32 Debug:

C/C++ General:

Preprocessor definitions: WIN32,_DEBUG,__WXMSW__,__WXDEBUG__,_MBCS,_WINDOWS,NOPCH

C/C++ Code Generation:

Use run-time library: Debug Multithreaded DLL

Link General:

Object/library modules: wxmsw26d_xrc.lib wxmsw26d_html.lib wxmsw26d_adv.lib wxmsw26d_core.lib wxbase26d_xml.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib 

Win32 Release:

C/C++ General:

Preprocessor definitions: WIN32,NDEBUG,__WXMSW__,_MBCS,_WINDOWS,NOPCH

C/C++ Code Generation:

Use run-time library: Multithreaded DLL

Link General:

Object/library modules: wxmsw26_xrc.lib wxmsw26_html.lib wxmsw26_adv.lib wxmsw26_core.lib wxbase26_xml.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib 

進(jìn)行以下操作之前,請先通過菜單 Build -> Configurations... 增加兩個編譯配置"Win32 Unicode Debug"和"Win32 Unicode Release"(分別復(fù)制于"Win32 Debug"和"Win32 Release")。

Win32 Unicode Debug:

C/C++ General:

Preprocessor definitions: WIN32,_DEBUG,__WXMSW__,__WXDEBUG__,_UNICODE,_WINDOWS,NOPCH

C/C++ Code Generation:

Use run-time library: Debug Multithreaded DLL

Link General:

Object/library modules: wxmsw26ud_xrc.lib wxmsw26ud_html.lib wxmsw26ud_adv.lib wxmsw26ud_core.lib wxbase26ud_xml.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib 

Win32 Unicode Release:

C/C++ General:

Preprocessor definitions: WIN32,NDEBUG,__WXMSW__,_UNICODE,_WINDOWS,NOPCH

C/C++ Code Generation:

Use run-time library: Multithreaded DLL

Link General:

Object/library modules: wxmsw26u_xrc.lib wxmsw26u_html.lib wxmsw26u_adv.lib wxmsw26u_core.lib wxbase26u_xml.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib 

 

設(shè)置wxWidgets目錄

在前面的設(shè)置中,指定了wxWidgets的庫文件(*.lib),但VC可能并不知道到哪個目錄去尋找這些文件。同時,我們的源代碼中也要包含 (include)wxWidgets的頭文件,其頭文件所在目錄也需要指定。另外,為了更好的調(diào)試wx程序,最好把wxWidgets的源代碼所在目錄 也設(shè)置好。

點(diǎn)擊菜單 Tools -> Options...,進(jìn)入 Directories 頁,分別加入以下路徑(下面的表示wxWidgets安裝目錄)

Include files:

\include

\include\msvc

Library files:

\lib\vc_lib

Source files:

\src

這一設(shè)置是針對VC全局的,以后再用VC創(chuàng)建wxWigets程序,就不用設(shè)置這些路徑了。

 

創(chuàng)建wxWidgets預(yù)編譯頭文件

各個編譯器不同,有的支持預(yù)編譯頭文件,有的不支持,支持預(yù)編譯頭文件的,使用的語法也有所不同,如果在每個源文件中都重復(fù)的寫未免不爽,還是集中到一個頭文件中來比較好。但是注意,有了此文件并不決定或限制你使用還是不使用預(yù)編譯頭文件,用不用以及怎么用還是在你。

點(diǎn)擊菜單 File -> New...,新建一個C/C++頭文件 wx_pch.h,其內(nèi)容如下:

#ifndef WX_PCH_H_INCLUDED
#define WX_PCH_H_INCLUDED

#if ( defined(USE_PCH) && !defined(WX_PRECOMP ) )
#define WX_PRECOMP
#endif // USE_PCH

// basic wxWidgets headers
#include <wx/wxprec.h>

// for use xrc files
#include <wx/xrc/xmlres.h>

#ifdef __BORLANDC__
#pragma hdrstop
#endif

#ifndef
WX_PRECOMP
#include <wx/wx.h>
#endif

#ifdef
USE_PCH
// put here all your rarely-changing header files

#endif // USE_PCH

#endif // WX_PCH_H_INCLUDED

wxWidgets官方文檔是大概也是這樣推薦,Code::Blocks中基本上就是這樣子,我只是簡單的增加了一行"#include "(為了使用XRC文件)。

以后,工程中的源文件,只要包含(include) wx_pch.h 文件就可以了。

 

創(chuàng)建wxApp子類

點(diǎn)擊菜單 Insert -> New Class...,新建一個名稱為"App"的類(類名稱可以隨意),考慮到代碼的跨平臺性,建議將其所在文件的名稱修改為全部使用小寫字母(如 app.h/app.cpp)。此操作將生成文件 app.h 和 app.cpp。

VC在這里生成的類代碼顯然是不滿足我們的要求的,需要進(jìn)行以下修改:

app.h

增加預(yù)編譯頭文件 wx_pch.h 的包含(以后創(chuàng)建的每個.h文件都要包含它):#include "wx_pch.h"

指定App類的父類為wxApp:即將"class App"修改為"class App : public wxApp"

為類增加虛方法OnInit()的聲明:virtual bool OnInit();

在類聲明的下方增加 wxWidgets App 聲明:DECLARE_APP(App)

最終 app.h 的內(nèi)容如下(其中經(jīng)過手工改寫的地方已用黃色背景突出顯示):

// by: liigo.com

#if
!defined( AFX_APP_H__B4514AF3_2125_487B_BD66_AF638A80E73A__INCLUDED_)
#define AFX_APP_H__B4514AF3_2125_487B_BD66_AF638A80E73A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "wx_pch.h"

class App : public wxApp
{
public :
   
App();
   
virtual ~App();
   
virtual bool OnInit ();
};

DECLARE_APP(App )

#endif // !defined(AFX_APP_H__B4514AF3_2125_487B_BD66_AF638A80E73A__INCLUDED_)

app.cpp

增加頭文件包含(此頭文件將在下面創(chuàng)建MainFrame類時創(chuàng)建):#include "mainframe.h"

增加 OnInit() 方法的定義(其中用到的MainFrame類定義于mainframe.h,見后文):

bool App::OnInit()
{
    MainFrame* mainFrame = new MainFrame(NULL, _("MainFrame
by liigo.com"));
   
mainFrame->Show ();
   
SetTopWindow(mainFrame);
   
return true;
}

在類定義的上方增加 wxWidgets App 定義:IMPLEMENT_APP(App)

最終 app.cpp 的內(nèi)容如下(其中經(jīng)過手工改寫的地方已用黃色背景突出顯示):

#include "app.h"

IMPLEMENT_APP (App)

App:: App()
{
}

App::~App()
{
}

bool App::OnInit()
{
   
MainFrame* mainFrame = new MainFrame(NULL, _("MainFrame by liigo.com"));
   
mainFrame-> Show();
   
SetTopWindow(mainFrame);
   
return true;
}

 

創(chuàng)建wxFrame子類

點(diǎn)擊菜單 Insert -> New Class...,新建一個名稱為"MainFrame"的類(類名稱可以隨意),考慮到代碼的跨平臺性,建議將其所在文件的名稱修改為全部使用小寫字母 (如 mainframe.h/mainframe.cpp)。此操作將生成文件 mainframe.h 和 mainframe.cpp。

下面對VC生成的類代碼進(jìn)行相應(yīng)的修改:

mainframe.h

增加預(yù)編譯頭文件的包含:#include "wx_pch.h"

指定MainFrane類的父類為wxFrame:class MainFrame : public wxFrame

修改構(gòu)造函數(shù)的聲明:MainFrame(wxWindow* parent, const wxString& title);

在類定義的末尾增加事件表聲明:DECLARE_EVENT_TABLE()

最終 mainframe.h 的內(nèi)容如下(其中經(jīng)過手工改寫的地方已用黃色背景突出顯示):

#if !defined(AFX_MAINFRAME_H__1BC90331_B69E_40F2_BDF7_197550D70F07__INCLUDED_ )
#define AFX_MAINFRAME_H__1BC90331_B69E_40F2_BDF7_197550D70F07__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "wx_pch.h"

class MainFrame : public wxFrame
{
public:
   
MainFrame( wxWindow* parent, const wxString & title);
   
virtual ~MainFrame();

   
DECLARE_EVENT_TABLE()
};
#endif // !defined(AFX_MAINFRAME_H__1BC90331_B69E_40F2_BDF7_197550D70F07__INCLUDED_)

mainframe.cpp

修改構(gòu)造函數(shù)的定義:

MainFrame::MainFrame(wxWindow* parent, const wxString& title) : wxFrame(parent, wxID_ANY, title)
{
   
//wxTextCtrl* text = new wxTextCtrl(this, wxID_ANY, _("some text"));
}

增加事件表定義(BEGIN_EVENT_TABLE 與 END_EVENT_TABLE 之間保留空白,留待以后綁定事件):

BEGIN_EVENT_TABLE(MainFrame, wxFrame)

END_EVENT_TABLE()

最終 mainframe.cpp 的內(nèi)容如下(其中經(jīng)過手工改寫的地方已用黃色背景突出顯示):

#include "mainframe.h"

BEGIN_EVENT_TABLE (MainFrame, wxFrame)

END_EVENT_TABLE()


MainFrame::MainFrame( wxWindow* parent, const wxString& title) : wxFrame (parent, wxID_ANY, title)
{
    //wxTextCtrl* text = new wxTextCtrl(this, wxID_ANY, _("some text"));
}

MainFrame ::~MainFrame()
{
}

 

至此,一個wxWidget的空白Project已經(jīng)創(chuàng)建完畢


編譯生成的 exe 文件的大小:

可執(zhí)行文件大小 Debug Release
Unicode 3.78M 956K
非Unicode 3.60M 932K

此數(shù)據(jù)全部是靜態(tài)鏈接wxWidgets的結(jié)果。動態(tài)鏈接的話,EXE的大小沒有意義——別忘了wxWidgets的版DLLs的大小總共約4到5M(Release版)。

 

添加子控件

向 wxFrame 或 wxDialog 中添加子控件是比較容易的,只需在其子類的構(gòu)造函數(shù)中 new 相應(yīng)的子控件就可以了。

這是最簡單的情況:

MainFrame::MainFrame(wxWindow* parent, const wxString& title) : wxFrame(parent, wxID_ANY, title)
{
   
wxTextCtrl * text = new wxTextCtrl( this, wxID_ANY, _("some text"));
}

沒錯,只要"new"一下就搞定了,控件會自動出現(xiàn)在wxFrame中。這是運(yùn)行結(jié)果:


如果界面再復(fù)雜一些,上面這種方法就行不通了,我們需要引入"Sizer"(詳見http://www.wxwidgets.org/manuals/2.6.3/wx_sizeroverview.html(Sizer一覽)):

MainFrame::MainFrame(wxWindow* parent, const wxString& title) : wxFrame(parent, wxID_ANY, title)
{
    wxTextCtrl * textCtrl = new wxTextCtrl( this, ID_TEXTCTRL, _T("some text"), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE );
   
wxButton * button = new wxButton(this , ID_BUTTON, _("測試按鈕"), wxDefaultPosition , wxDefaultSize, 0 );

   
wxBoxSizer* vBoxSizer = new wxBoxSizer(wxVERTICAL);
   
this ->SetSizer(vBoxSizer);

   
vBoxSizer->Add (textCtrl, 1, wxALL|wxEXPAND, 5);
   
vBoxSizer->Add(button, 0 , wxALIGN_CENTER_HORIZONTAL|wxALL|wxALIGN_BOTTOM, 5);
}

上面是多行編輯框控件,下面是按鈕控件,當(dāng)窗口大小變化時,編輯框控件將在水平和垂直方向上自動擴(kuò)展,而按鈕始終位于窗口底部居中。


上述代碼中涉及的控件ID(ID_TEXTCTRL,ID_BUTTON)是我們在 mainframe.cpp 中自行定義的(定義控件ID的目的是為了下一步了事件處理):

enum CtrlID
{
   
ID_TEXTCTRL, ID_BUTTON
};

 

參考文檔:http://www.wxwidgets.org/manuals/2.6.3/wx_sizeroverview.html(Sizer一覽)

采用XML格式文件(XRC文件)定義程序界面也是不錯的方式,詳見:http://www.wxwidgets.org/manuals/2.6.3/wx_xrcoverview.html(基于XML的資源系統(tǒng)一覽)。

無論如何,手工進(jìn)行界面布局總是很繁雜,我們需要(可視化)工具的幫助:http://www.wxwidgets.org/apps2.htm

 

處理事件

在wxWidgets中處理事件,主要有兩個步驟:編寫"事件處理函數(shù)(方法)",填寫"事件表(EVENT_TABLE)"。

事件處理函數(shù)(方法)視事件的不同而有所不同,但也有規(guī)律:沒有返回值,只有一個引用型參數(shù)(且一定是wxEvent的子類),不是虛方法(virtual method)。事件處理函數(shù)(方法)的名稱沒有特殊規(guī)定,可以自行命名。

作為示例,我們來處理上圖中"測試按鈕"被按下的事件。

根據(jù)wxWidgets文檔,要處理按鈕事件,需在自己的類中添加如下事件處理函數(shù)(方法):void MainFrame::OnButtonClick (wxCommandEvent &event)

具體說來就是,在 mainframe.h 文件中的 MainFrame 類中增加新的 OnButtonClick() 方法聲明:

private:
   
void OnButtonClick( wxCommandEvent& event);

并在 mainframe.cpp 文件中增加 OnButtonClick() 方法的定義:

void MainFrame::OnButtonClick( wxCommandEvent &event)
{
   
//取編輯框中的文本并用信息框顯示出來
    wxString text = ((wxTextCtrl*)this-> FindWindow(ID_TEXTCTRL))->GetValue();
   
wxMessageBox (text);
}

下面需要在 mainframe.cpp 中填寫"事件表(EVENT_TABLE)",以便我們的"事件處理函數(shù)(方法)"能在適當(dāng)?shù)臅r機(jī)(即事件觸發(fā)時)被調(diào)用:

BEGIN_EVENT_TABLE(MainFrame, wxFrame )
   
EVT_BUTTON(ID_BUTTON, MainFrame ::OnButtonClick)
END_EVENT_TABLE()

在這個事件表中,我們使用宏 EVT_BUTTON 指定了按鈕的ID,以及"事件處理函數(shù)(方法)"。

注:上面一直講"事件處理函數(shù)(方法)",其實(shí)是"方法(method)"不是"函數(shù)(function)",只是"方法"這個詞在編程領(lǐng)域和在日 常生活中可以有不同的理解("方法"也可以理解為"方式"),我如果說成"事件處理方法",難免會產(chǎn)生歧義。當(dāng)然,"事件處理函數(shù)(方法)"似乎也并不十 分合適,應(yīng)稱為"事件處理'方法'"或"事件處理方法(method)"?再深究下去就有咬文嚼字的嫌疑了,聰明的讀者早已明白我的意思了吧?



 

如何處理其它事件?

說白了,關(guān)鍵要知道兩點(diǎn):事件處理函數(shù)(方法)的參數(shù)是什么類型,填寫參數(shù)表時用哪一個宏(EVT_*)。

再補(bǔ)充一點(diǎn):要知道"什么控件"在"什么時機(jī)"會觸發(fā)"什么事件"。

要知道這些,就需要對wxWidgets的事件處理有一個比較全面的了解。

建議看一下wxWidgets官方文檔中的這篇文章:http://www.wxwidgets.org/manuals/2.6.3/wx_eventhandlingoverview.html(事件處理一覽)

尤其是其中的 Event macros summary(事件宏概要)一段。

電子書《Cross-Platform GUI Programming with wxWidgets》附錄9(Appendix I, 617頁)中對事件處理時所涉及的事件類型(wxXXXEvent)和事件宏(EVT_*)有比較好的總結(jié),建議看一下,最好打印出來放在手邊,以便隨時參考。

本文所涉及的完整源代碼可在此下載:http://liigo.diy.myrice.com/article/wxProject/wxProject.zip

 

更進(jìn)一步

了解 Sizer,熟悉界面設(shè)計(jì):http://www.wxwidgets.org/manuals/2.6.3/wx_sizeroverview.html

了解 事件處理:http://www.wxwidgets.org/manuals/2.6.3/wx_eventhandlingoverview.html

了解 wxWidgets 提供了哪些控件,它們各自的屬性、方法、事件,以及它們的用法。

去 wxWidgets.org 上找第三方的控件/庫:http://www.wxwidgets.org/contrib2.htm#classes

wxWiki 上找第三方的控件/庫:http://www.wxwidgets.org/wiki/index.php/Table_Of_Contents#Pages_about_classes.2C_functions_or_macros

GUI庫嘛?無非就是控件(component)的使用:布局、操作、事件處理。

posted on 2008-11-05 00:55 kenlistian 閱讀(1691) 評論(0)  編輯 收藏 引用 所屬分類: wxwidgets
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品国产欧美| 最新国产拍偷乱拍精品| 一本大道久久a久久精品综合| 午夜精品久久一牛影视| 一区二区免费在线视频| 日韩一级不卡| 亚洲午夜在线观看| 亚洲天堂网站在线观看视频| 亚洲精品美女91| 亚洲国产日韩欧美综合久久| 亚洲国产女人aaa毛片在线| 亚洲精品女人| 久久久精品免费视频| 久久夜色精品国产欧美乱| 欧美sm视频| 亚洲一区二区综合| 蜜桃久久精品一区二区| 欧美人成网站| 国产一区999| 一区二区三区色| 欧美一区二区视频97| 欧美电影打屁股sp| 亚洲午夜免费视频| 欧美成人影音| 一区二区三区在线高清| 亚洲女同在线| 亚洲激情成人| 久久久夜夜夜| 国产精品视频大全| 夜夜夜久久久| 欧美激情视频一区二区三区不卡| 亚洲尤物视频在线| 欧美无砖砖区免费| 一区二区高清视频| 亚洲第一色中文字幕| 欧美在线播放一区二区| 国产精品久久激情| 亚洲一级高清| 日韩香蕉视频| 国产精品成人久久久久| 亚洲一区二区3| 亚洲一区二区四区| 国产精品日韩在线| 午夜精品av| 亚洲女女女同性video| 一区二区黄色| 国产精品美女久久久久久2018| 亚洲麻豆视频| 亚洲午夜精品久久久久久app| 欧美日韩国产综合久久| 亚洲免费网站| 久久九九国产精品| 亚洲精品色图| 亚洲欧美日韩直播| 在线不卡中文字幕| 亚洲精品视频免费| 国产精品丝袜白浆摸在线| 久久久久久久999精品视频| 另类人畜视频在线| 久久精品二区亚洲w码| 欧美成人免费在线| 久久国产精品一区二区| 欧美大片18| 久热精品视频| 国产精品毛片| 日韩网站在线| 99精品国产热久久91蜜凸| 亚洲欧美日韩精品综合在线观看 | 亚洲第一在线| 一区二区三区在线看| 一区二区三区 在线观看视频| 激情综合在线| 久久精品欧美日韩| 久久久91精品国产一区二区三区 | 欧美激情精品久久久久久大尺度 | 一本一本久久a久久精品牛牛影视| 国产精品久久97| 一区二区三区精品国产| 亚洲午夜av在线| 欧美三级乱码| 亚洲欧美另类久久久精品2019| 亚洲午夜精品网| 国产精品午夜在线| 午夜欧美大尺度福利影院在线看| 亚洲欧美日韩一区二区| 国产日韩欧美一区二区| 久久久久国产一区二区三区| 欧美阿v一级看视频| 日韩视频免费| 国产精品一区视频| 久久精品亚洲精品| 亚洲国产精品久久| 亚洲欧美乱综合| 黄色成人在线| 欧美日韩综合视频| 久久看片网站| 亚洲一区视频| 亚洲精品视频在线看| 欧美一级大片在线观看| 亚洲人成免费| 黄色av成人| 国产日韩欧美成人| 欧美激情精品久久久久久大尺度 | 国产一区二区久久| 欧美日韩成人一区| 久热国产精品视频| 亚洲欧美亚洲| 亚洲国产精品久久久久婷婷884| 欧美国产日韩二区| 久久精品中文| 久久久亚洲人| 久久久一二三| 久久久精品久久久久| 欧美在线首页| 久久精品成人一区二区三区| 亚洲摸下面视频| 性欧美18~19sex高清播放| 亚洲香蕉网站| 欧美在线视频一区二区三区| 性感少妇一区| 久久国产乱子精品免费女| 欧美一区2区视频在线观看| 午夜精品久久久久久久男人的天堂 | 久久一日本道色综合久久| 亚洲欧美一区二区激情| 欧美一区免费视频| 另类激情亚洲| 亚洲欧洲精品一区二区| 一区二区三区精品国产| 欧美在线电影| 欧美日韩高清在线观看| 国产欧美日韩另类一区| 精久久久久久| 亚洲欧美国产毛片在线| 久久免费99精品久久久久久| 亚洲黄色三级| 欧美在线观看天堂一区二区三区| 蜜臀99久久精品久久久久久软件 | 国产麻豆91精品| 激情欧美一区二区三区| 欧美日韩 国产精品| 国产精品日韩专区| 99re6热在线精品视频播放速度| 欧美一级二区| 91久久久久| 久热这里只精品99re8久| 国产精品色午夜在线观看| 在线成人中文字幕| 欧美在线观看网址综合| 亚洲乱码精品一二三四区日韩在线| 午夜精品电影| 国产精品青草综合久久久久99| 99在线精品视频| 欧美激情四色| 欧美激情一区二区三区在线视频观看| 国产伦理一区| 久久成人羞羞网站| 亚洲欧美日产图| 国产色爱av资源综合区| 久久一区二区三区四区五区| 久久国产精彩视频| 尹人成人综合网| 亚洲国产1区| 欧美日韩激情网| 性一交一乱一区二区洋洋av| 亚洲一区二区三区激情| 国产精品视频yy9299一区| 欧美一区二区三区在线| 久久久无码精品亚洲日韩按摩| 欲香欲色天天天综合和网| 欧美国产日韩亚洲一区| 欧美日韩少妇| 欧美在线综合视频| 久久综合影音| 欧美在线www| 欧美高清在线观看| 久久不射2019中文字幕| 欧美成人一品| 久久夜色精品国产欧美乱极品| 欧美aaa级| 久久久久五月天| 欧美性猛交视频| 亚洲黄色在线观看| 精品白丝av| 亚洲免费在线看| 亚洲视频专区在线| 欧美~级网站不卡| 国产精品毛片va一区二区三区 | 91久久精品国产91性色| 国产日产欧美a一级在线| 最新成人在线| 亚洲日本欧美在线| 美脚丝袜一区二区三区在线观看| 羞羞答答国产精品www一本| 欧美精品xxxxbbbb| 亚洲电影免费| 艳女tv在线观看国产一区| 麻豆国产精品777777在线| 蜜臀久久99精品久久久画质超高清| 国产精品久久久久久久免费软件 |