精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

學(xué)習(xí)C#消息:循序漸進(jìn)

開發(fā) 后端
本文介紹了什么是C#消息,C#消息驅(qū)動(dòng)的過(guò)程以及C#消息的封裝等內(nèi)容,希望對(duì)大家有所幫助。

一、C#消息概述

Windows下應(yīng)用程序的執(zhí)行是通過(guò)消息驅(qū)動(dòng)的。消息是整個(gè)應(yīng)用程序的工作引擎,我們需要理解掌握我們使用的編程語(yǔ)言是如何封裝消息的原理。

1 什么是消息(Message)

消息就是通知和命令。在.NET框架類庫(kù)中的System.Windows.Forms命名空間中微軟采用面對(duì)對(duì)象的方式重新定義了Message。新的消息(Message)結(jié)構(gòu)的公共部分屬性基本與早期的一樣,不過(guò)它是面對(duì)對(duì)象的。

公共屬性:

HWnd    獲取或設(shè)定消息的處理函數(shù)

Msg     獲取或設(shè)定消息的ID號(hào)

Lparam  指定消息的LParam字段

Wparam  指定消息的WParam字段

Result  指定為響應(yīng)消息處理函數(shù)而向OS系統(tǒng)返回的值

2 消息驅(qū)動(dòng)的過(guò)程

所有的外部事件,如鍵盤輸入、鼠標(biāo)移動(dòng)、按動(dòng)鼠標(biāo)都由OS系統(tǒng)轉(zhuǎn)換成相應(yīng)的消息發(fā)送到應(yīng)用程序的消息隊(duì)列。每個(gè)應(yīng)用程序都有一段相應(yīng)的程序代碼來(lái)檢索、分發(fā)這些消息到對(duì)應(yīng)的窗體,然后由窗體的處理函數(shù)來(lái)處理。

二、C#消息的封裝

C#對(duì)消息重新進(jìn)行了面對(duì)對(duì)象的封裝,在C#中消息被封裝成了事件。

System.Windows.Forms.Application類具有用于啟動(dòng)和停止應(yīng)用程序和線程以及處理Windows消息的方法。

調(diào)用Run以啟動(dòng)當(dāng)前線程上的應(yīng)用程序消息循環(huán),并可以選擇使其窗體可見(jiàn)。 

調(diào)用Exit或ExitThread來(lái)停止消息循環(huán)。

C#中用Application類來(lái)處理消息的接收和發(fā)送的。消息的循環(huán)是由它負(fù)責(zé)的。

從本質(zhì)上來(lái)講,每個(gè)窗體一般都對(duì)應(yīng)一個(gè)窗體過(guò)程處理函數(shù)。那么,C#的一個(gè)Form實(shí)例(相當(dāng)于一個(gè)窗體)收到消息后是如何處理消息的?其實(shí),這個(gè)問(wèn)題的分析也就是展示了C#的消息封裝原理。

實(shí)現(xiàn)鼠標(biāo)左鍵按下的消息的響應(yīng)(WM_LBUTTONDOWN)  

  1. this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown1);   
  2.  this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown2);   
  3.  
  4.  private void Form1_MouseDown1(object sender, System.Windows.Forms.MouseEventArgs e)   
  5.  {   
  6.      if(e.Button==System.Windows.Forms.MouseButtons.Left)   
  7.    System.Windows.Forms.MessageBox.Show("消息被Form1_MouseDown1函數(shù)響應(yīng)");   
  8.  }   
  9.  
  10.  private void Form1_MouseDown2(object sender, System.Windows.Forms.MouseEventArgs e)   
  11.  {   
  12.   if(e.Button==System.Windows.Forms.MouseButtons.Left)   
  13.    System.Windows.Forms.MessageBox.Show("消息被Form1_MouseDown2函數(shù)響應(yīng)");   
  14.  }  

上面this.MouseDown是C#中的一個(gè)事件。它的定義如下:

  1. public event MouseEventHandler MouseDown;  

而MouseEventHandler的定義為:

  1. public delegate void MouseEventHandler( object sender,MouseEventArgs e);  

實(shí)際上,上面定義了一個(gè)委托類型MouseEventHandler。委托了啟用了其它編程語(yǔ)言中的函數(shù)指針的解決方案。與C++的函數(shù)指針不同,委托是完全面向?qū)ο蟮模瑫r(shí)封裝了對(duì)象實(shí)例和方法。本質(zhì)上,委托把一個(gè)實(shí)例和該實(shí)例上的方法函數(shù)封裝成一個(gè)可調(diào)用的實(shí)體,它是面對(duì)對(duì)象的、安全的。

我們可以把

  1. this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown1);  

這條語(yǔ)句看成向this.MouseDown添加一個(gè)函數(shù)指針。

事件是對(duì)象發(fā)送的消息,以發(fā)送信號(hào)通知操作的發(fā)生。引發(fā)(觸發(fā))事件的對(duì)象叫做事件發(fā)送方。捕獲事件并對(duì)事件作出響應(yīng)的對(duì)象叫做事件接收方。在事件通訊中,事件發(fā)送方類并不知道哪個(gè)對(duì)象或方法將接收到(處理)它引發(fā)的事件。所需要的是在發(fā)送方和接收方之間存在一個(gè)媒介(類似指針的機(jī)制)。.NET框架定義了一個(gè)特殊的類型(Delegate委托),該類型提供函數(shù)指針的功能。這樣,委托就等效于一個(gè)類型安全的函數(shù)指針或一個(gè)回調(diào)函數(shù)。

前面我們向this.MouseDown事件添加了兩個(gè)委托。

  1. this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown1);   
  2. this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown2);  

結(jié)果,我們的兩個(gè)函數(shù)Form1_MouseDown1、Form1_MouseDown2在我們單擊鼠標(biāo)左鍵的時(shí)候都會(huì)被調(diào)用,而且調(diào)用的順序和我們添加委托的順序一致。

WM_LBUTTONDOWN消息首先被Application類從應(yīng)用程序消息隊(duì)列中取出,然后分發(fā)到相應(yīng)的窗體。窗體使用MouseDown事件中的函數(shù)指針調(diào)用已經(jīng)添加的響應(yīng)函數(shù)。所以C#中的事件字段實(shí)質(zhì)上是一個(gè)函數(shù)指針列表,用來(lái)維護(hù)一些消息到達(dá)時(shí)的響應(yīng)函數(shù)的地址。    

三、結(jié)論

C#消息的工作流程:

C#消息被Application類從應(yīng)用程序消息隊(duì)列中取出,然后分發(fā)到消息對(duì)應(yīng)的窗體,窗體對(duì)象的***個(gè)響應(yīng)函數(shù)是對(duì)象中的protected override void WndProc(ref System.Windows.Forms.Message e)方法。

它再根據(jù)消息的類型調(diào)用默認(rèn)的消息響應(yīng)函數(shù)(如OnMouseDown),默認(rèn)的響應(yīng)函數(shù)然后根據(jù)對(duì)象的事件字段(如this.MouseDown )中的函數(shù)指針列表,調(diào)用用戶所加入的響應(yīng)函數(shù)(如Form1_MouseDown1和Form1_MouseDown2),而且調(diào)用順序和用戶添加順序一致。

四、再回首Application類

Application類有一個(gè)AddMessageFilter的靜態(tài)方法,通過(guò)它我們可以添加消息篩選器,以便在向目標(biāo)傳遞Windows消息時(shí),檢視這些消息。

使用消息篩選器來(lái)防止引發(fā)特定事件,或在將某事件傳遞給事件處理程序之前使用消息篩選器對(duì)其執(zhí)行特殊操作。我們必須提供IMessageFilter接口的一個(gè)實(shí)現(xiàn),然后才可以使用消息篩選器。以下的示范代碼將演示在消息發(fā)往窗體前我們?nèi)绾螖r截它。我們攔截的同樣是WM_LBUTTONDOWN消息。

  1. using System;   
  2. using System.Drawing;   
  3. using System.Collections;   
  4. using System.ComponentModel;   
  5. using System.Windows.Forms;   
  6. using System.Data;   
  7.  
  8. namespace MessageMech3   
  9. {   
  10.     //實(shí)現(xiàn)消息過(guò)濾器接口   
  11.    public class CLButtonDownFilter : IMessageFilter   
  12.    {   
  13.       public bool PreFilterMessage(ref Message m)   
  14.       {   
  15.          if (m.Msg==0x0201)// WM_LBUTTONDOWN   
  16.          {   
  17.             System.Windows.Forms.MessageBox.Show("App中鼠標(biāo)左鍵按下");   
  18.             //返回值為true, 表示消息已被處理,不要再往后傳遞,因此消息被截獲   
  19.             //返回值為false,表示消息未被處理,需要再往后傳遞,因此消息未被截獲   
  20.             return true;   
  21.          }   
  22.          return false;   
  23.       }   
  24.    }   
  25.  
  26.  
  27.    /// < summary>   
  28.    /// Summary description for WinForm.   
  29.    /// < /summary>   
  30.    public class WinForm : System.Windows.Forms.Form   
  31.    {   
  32.       /// < summary>   
  33.       /// Required designer variable.   
  34.       /// < /summary>   
  35.       private System.Windows.Forms.Label label1;   
  36.       private System.ComponentModel.Container components = null;   
  37.  
  38.       public WinForm()   
  39.       {   
  40.          //   
  41.          // Required for Windows Form Designer support   
  42.          //   
  43.          InitializeComponent();   
  44.  
  45.          //   
  46.          // TODO: Add any constructor code after InitializeComponent call   
  47.          //   
  48.          //安裝自己的過(guò)濾器   
  49.          CLButtonDownFilter MyFilter=new CLButtonDownFilter();   
  50.          System.Windows.Forms.Application.AddMessageFilter(MyFilter);   
  51.       }   
  52.  
  53.       /// < summary>   
  54.       /// Clean up any resources being used.   
  55.       /// < /summary>   
  56.       protected override void Dispose (bool disposing)   
  57.       {   
  58.          if (disposing)   
  59.          {   
  60.             if (components != null)   
  61.             {   
  62.                components.Dispose();   
  63.             }   
  64.          }   
  65.          base.Dispose(disposing);   
  66.       }   
  67.  
  68.       #region Windows Form Designer generated code   
  69.       /// < summary>   
  70.       /// Required method for Designer support - do not modify   
  71.       /// the contents of this method with the code editor.   
  72.       /// < /summary>   
  73.       private void InitializeComponent()   
  74.       {   
  75.          this.label1 = new System.Windows.Forms.Label();   
  76.          this.SuspendLayout();   
  77.          //    
  78.          // label1   
  79.          //    
  80.          this.label1.BackColor = System.Drawing.Color.Transparent;   
  81.          this.label1.Dock = System.Windows.Forms.DockStyle.Top;   
  82.          this.label1.ForeColor = System.Drawing.Color.DarkViolet;   
  83.          this.label1.Name = "label1";   
  84.          this.label1.Size = new System.Drawing.Size(440, 32);   
  85.          this.label1.TabIndex = 0;   
  86.          this.label1.Text = "演示如何在App對(duì)象中處理消息,請(qǐng)點(diǎn)鼠標(biāo)左鍵";   
  87.          this.label1.TextAlign = System.Drawing.ContentAlignment.BottomCenter;   
  88.          //    
  89.          // Form1   
  90.          //    
  91.          this.AutoScaleBaseSize = new System.Drawing.Size(7, 22);   
  92.          this.BackColor = System.Drawing.Color.WhiteSmoke;   
  93.          this.ClientSize = new System.Drawing.Size(440, 273);   
  94.          this.Controls.AddRange(new System.Windows.Forms.Control[] {this.label1});   
  95.          this.Font = new System.Drawing.Font("華文行楷", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));   
  96.          this.Name = "WinForm";   
  97.          this.Text = "WinForm";   
  98.  
  99.          //消息響應(yīng)函數(shù)的調(diào)用順序和添加委托的順序一致   
  100.          //即:以下命令將先調(diào)用Form1_MouseDown1再調(diào)用Form1_MouseDown2   
  101.  
  102.          //通過(guò)委托添加自己的鼠標(biāo)按鍵消息響應(yīng)函數(shù)1   
  103.          this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown1);   
  104.          //通過(guò)委托添加自己的鼠標(biāo)按鍵消息響應(yīng)函數(shù)2   
  105.          this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown2);   
  106.  
  107.          this.ResumeLayout(false);   
  108.       }   
  109.       #endregion   
  110.  
  111.       /// < summary>   
  112.       /// 應(yīng)用程序的主入口點(diǎn)。   
  113.       /// < /summary>   
  114.       [STAThread]   
  115.       static void Main()    
  116.       {   
  117.          Application.Run(new WinForm()); //啟動(dòng)當(dāng)前Form線程上的應(yīng)用程序消息循環(huán)   
  118.       }   
  119.  
  120.       //要點(diǎn)1   
  121.       // 通過(guò)C#提供的事件接口添加自己的鼠標(biāo)按鍵事件的響應(yīng)函數(shù)   
  122.       //   
  123.       private void Form1_MouseDown1(object sender, System.Windows.Forms.MouseEventArgs e)   
  124.       {   
  125.           if(e.Button==System.Windows.Forms.MouseButtons.Left)   
  126.             System.Windows.Forms.MessageBox.Show("消息被Form1_MouseDown1函數(shù)響應(yīng)");   
  127.  
  128.       }   
  129.       private void Form1_MouseDown2(object sender, System.Windows.Forms.MouseEventArgs e)   
  130.       {   
  131.          if(e.Button==System.Windows.Forms.MouseButtons.Left)   
  132.             System.Windows.Forms.MessageBox.Show("消息被Form1_MouseDown2函數(shù)響應(yīng)");   
  133.  
  134.       }   
  135.       //要點(diǎn)2   
  136.       //通過(guò)覆蓋基類的事件引發(fā)函數(shù)攔截消息   
  137.       //   
  138.       protected override  void OnMouseDown( MouseEventArgs e)   
  139.       {   
  140.          if(e.Button==System.Windows.Forms.MouseButtons.Left)   
  141.             System.Windows.Forms.MessageBox.Show("消息被OnMouseDown函數(shù)響應(yīng)");   
  142.  
  143.          //如果需要截獲消息,可將base.OnMouseDown(e);語(yǔ)句注釋掉   
  144.          base.OnMouseDown(e);   
  145.       }   
  146.       //要點(diǎn)3   
  147.       //通過(guò)覆蓋基類的窗體函數(shù)攔截消息   
  148.       //   
  149.       protected override void WndProc(ref System.Windows.Forms.Message e)   
  150.       {   
  151.          //如果需要截獲消息,   
  152.          //if(e.Msg==0x0201)// WM_LBUTTONDOWN   
  153.          //   System.Windows.Forms.MessageBox.Show("消息被WndProc函數(shù)響應(yīng)");   
  154.          //else   
  155.          //   base.WndProc(ref e);   
  156.  
  157.          //不需要截獲消息則為   
  158.          if(e.Msg==0x0201)// WM_LBUTTONDOWN   
  159.             System.Windows.Forms.MessageBox.Show("消息被WndProc函數(shù)響應(yīng)");   
  160.          base.WndProc(ref e);   
  161.       }   
  162.  
  163.    }   
  164. }  

以上代碼我們首先用類CLButtonDownFilter實(shí)現(xiàn)了IMessageFilter接口,在WinForm初始化的時(shí)候我們安裝了消息篩選器。程序?qū)嶋H執(zhí)行的時(shí)候,在點(diǎn)擊鼠標(biāo)左鍵的時(shí)候,程序僅僅會(huì)彈出一個(gè)"App中鼠標(biāo)左鍵按下"的消息框。因?yàn)槲覀冊(cè)谙l(fā)往窗體前攔截了它,所以窗體將接收不到WM_LBUTTONDOWN消息。

如果我們把   

  1.     if (m.Msg==0x0201)// WM_LBUTTONDOWN   
  2. {   
  3.    System.Windows.Forms.MessageBox.Show("App中鼠標(biāo)左鍵按下");   
  4.    return true;   
  5. }  

改成

  1.     if (m.Msg==0x0201)// WM_LBUTTONDOWN   
  2. {   
  3.    System.Windows.Forms.MessageBox.Show("App中鼠標(biāo)左鍵按下");   
  4.    return false;   
  5. }  

那么,我們?cè)贏pplication類處理消息后,消息將繼續(xù)發(fā)往窗體。窗體的函數(shù)將可以處理此消息。程序執(zhí)行效果是順序彈出5個(gè)消息框。

    1:< < App中鼠標(biāo)左鍵按下>>

    2:< < 消息被WndProc函數(shù)響應(yīng)>>

    3:< < 消息被OnMouseDown函數(shù)響應(yīng)>>

    4:< < 消息被Form1_MouseDown1函數(shù)響應(yīng)>>

    5:< < 消息被Form1_MouseDown2函數(shù)響應(yīng)>>

主要有兩種方法過(guò)濾實(shí)現(xiàn)過(guò)濾

***種:

  1. protected override void WndProc(ref Message m)   
  2. {   
  3. if (m.Msg == 0x0201)   
  4. return;   
  5. else   
  6. base.WndProc(ref m);   
  7. }  

第二種

不重寫WndProc

  1. //實(shí)現(xiàn)消息過(guò)濾器接口   
  2. public class CLButtonDownFilter : IMessageFilter   
  3. {   
  4. public bool PreFilterMessage(ref Message m)   
  5. {   
  6. if (m.Msg == 0x0201)// WM_LBUTTONDOWN   
  7. {   
  8. //返回值為true, 表示消息已被處理,不要再往后傳遞,因此消息被截獲   
  9. //返回值為false,表示消息未被處理,需要再往后傳遞,因此消息未被截獲   
  10. return true;   
  11. }   
  12. return false;   
  13. }   
  14. }  

CLButtonDownFilter MyFilter = new CLButtonDownFilter();

System.Windows.Forms.Application.AddMessageFilter(MyFilter);

關(guān)于C#消息的相關(guān)知識(shí)就介紹到這里。

【編輯推薦】

  1. 總結(jié)C#語(yǔ)言命名規(guī)范
  2. C#反射相關(guān)知識(shí)學(xué)習(xí)
  3. 大話F#和C#:是否會(huì)重蹈C#失敗的覆轍?
  4. 總結(jié)和學(xué)習(xí)C#接口
  5. 學(xué)習(xí)C#程序有感
責(zé)任編輯:book05 來(lái)源: cnblogs
相關(guān)推薦

2009-08-07 03:47:00

2011-05-20 10:39:43

oracle

2019-06-25 09:02:44

加密加密算法密鑰

2010-12-28 16:49:05

2012-03-01 22:37:02

Linux入門

2011-05-24 13:47:25

程序員

2023-03-23 08:49:39

負(fù)載均衡服務(wù)器

2020-02-19 08:48:04

Java內(nèi)存模型CPU

2018-02-05 15:30:01

MariaDB服務(wù)器主從復(fù)制

2009-10-30 14:43:24

寬帶接入網(wǎng)

2010-12-28 16:38:16

Windows SerWindows 部署服

2022-04-21 14:03:54

開發(fā)API生命周期

2010-12-31 15:28:41

Windows 7

2024-07-04 08:00:00

2022-03-31 06:23:43

自動(dòng)化響應(yīng)網(wǎng)絡(luò)安全

2022-04-29 11:27:26

循序漸進(jìn)!開展零信任

2020-11-23 11:09:18

大數(shù)據(jù)教育云計(jì)算

2010-01-06 16:40:30

cisco交換機(jī)vla

2020-07-17 10:37:08

云計(jì)算安全IT

2013-12-03 09:57:15

下一代互聯(lián)網(wǎng)IPv6遷移
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美激情一区二区三区全黄| 懂色av一区二区| 国产精品亚洲专一区二区三区| 欧美va在线播放| 欧美一级日本a级v片| 国产成人综合在线视频| 麻豆免费版在线观看| 老司机午夜精品| 日韩电影大片中文字幕| 无码毛片aaa在线| 欧美a视频在线观看| 爱高潮www亚洲精品| 国产精品国产a级| 日韩美女视频免费看| 久久无码专区国产精品s| 91精品专区| 国产日韩欧美一区| 精品成人一区二区| 午夜欧美性电影| 精品国产xxx| 精品一区二区三区中文字幕在线| 中文字幕欧美国产| 国产999视频| 偷拍女澡堂一区二区三区| 久草在线视频福利| 国产成人综合网| 久久视频在线观看免费| 亚洲图色中文字幕| 91在线直播| 日本成人在线一区| 中文字幕精品av| 不卡的av中文字幕| 免费大片在线观看www| 日本不卡123| 在线观看国产精品日韩av| aaa毛片在线观看| 日本大臀精品| 日韩和欧美一区二区| 亚洲人成免费电影| av网址在线观看免费| 成人在线观看黄色| 麻豆久久久久久| 久久久av网站| 亚洲综合中文网| 秋霞在线午夜| 99在线精品免费| 欧美中文字幕在线播放| 少妇按摩一区二区三区| 成人国产电影在线观看| 99免费精品在线观看| 欧美诱惑福利视频| 在线观看日本中文字幕| 国产一区二区主播在线| 国产精品的网站| 91久久国产精品| 青青操国产视频| 欧美黑白配在线| 日韩欧美国产成人| 日本不卡免费新一二三区| 日韩乱码一区二区三区| 国产精品7m凸凹视频分类| 91精品国产手机| 97视频久久久| 国产小视频在线| 久久99久久久久久久久久久| 欧美高清自拍一区| 人妻精品久久久久中文字幕| 日韩美女在线| 午夜成人免费视频| 亚洲一区二区三区精品动漫| 亚洲av无码乱码国产麻豆| 亚洲欧美日韩一区在线观看| 在线观看日韩av| 日本在线视频播放| 丁香六月综合| 亚洲男帅同性gay1069| 国产原创精品| 夜夜躁很很躁日日躁麻豆| 欧美二区视频| 亚洲视频在线视频| 无码人妻一区二区三区在线视频| 深夜在线视频| 一区二区三区在线观看视频 | 手机av在线| 国产精品国产自产拍高清av| 不卡视频一区| 伊人免费在线观看| 136国产福利精品导航网址| 一本色道久久88亚洲综合88| 巨乳女教师的诱惑| 91欧美精品| 黑人极品videos精品欧美裸| 亚洲AV无码成人精品一区| 你懂的在线免费观看| 国产福利一区在线| 国产裸体写真av一区二区| 香蕉免费毛片视频| 综合久久亚洲| 丝袜美腿亚洲一区二区| 男生裸体视频网站| 18国产精品| 在线播放欧美女士性生活| 热久久精品国产| 性欧美freesex顶级少妇| 亚洲一区在线电影| 992tv成人免费观看| 国产日本在线观看| 91免费国产视频网站| 91精品视频在线免费观看| 日本视频免费观看| 国产日韩欧美一区| 午夜精品一区二区三区在线视| 国产一区二区三区在线视频观看| 久久美女视频| 中文字幕亚洲欧美日韩在线不卡| 亚洲精品一区二区三区影院忠贞| 亚洲人成网www| 日韩精品免费在线视频| 国产吃瓜黑料一区二区| 欧美影院视频| 日韩欧美综合在线| 人妻巨大乳一二三区| 中文成人激情娱乐网| 欧美日韩亚洲不卡| 亚洲免费av一区| 精品69视频一区二区三区| 色婷婷综合在线| 无码人妻丰满熟妇区毛片| 亚洲女色av| 欧美性xxxx| 十八禁视频网站在线观看| 中文字幕乱码在线播放| 色综合久久天天综合网| 日韩欧美黄色大片| 成人交换视频| 欧美日韩国产精选| 一级网站在线观看| 中文一区二区三区四区| 亚洲国产成人久久| 一区二区三区免费在线观看视频 | 欧美激情视频一区二区三区| 日产精品久久久久久久性色| 久久影院电视剧免费观看| 欧美综合激情| 美女写真理伦片在线看| 亚洲欧美乱综合| 极品粉嫩国产18尤物| 1234区中文字幕在线观看| 亚洲图片一区二区| 国产资源在线视频| 制服诱惑亚洲| 制服.丝袜.亚洲.另类.中文| 久久久久99人妻一区二区三区| 国产精品极品国产中出| 亚洲美女视频网| 91av手机在线| 国产在线欧美| 国产精品福利网站| 国产成人a人亚洲精品无码| eeuss影院一区二区三区| 欧美日韩国产精品一区二区| 午夜老司机在线观看| 亚洲午夜精品网| 不卡av免费在线| 涩涩屋成人免费视频软件| 亚洲精品久久久久中文字幕二区| 四虎永久免费在线观看| 9191国语精品高清在线| 91sa在线看| 97超碰国产在线| 91色视频在线| 日本丰满少妇黄大片在线观看| 超碰91在线观看| 欧美精品欧美精品系列| 久久偷拍免费视频| 欧美在线网站| 国产精品第8页| 亚洲国产精品suv| 欧美国产综合色视频| 美女扒开大腿让男人桶| 福利一区二区| 亚洲精品成人久久电影| √天堂中文官网8在线| 亚洲综合好骚| 51国产成人精品午夜福中文下载| 九九九伊在人线综合| 一区二区三区在线视频免费| 亚洲少妇久久久| 巨人精品**| 欧美成人午夜激情在线| 一区二区乱子伦在线播放| 成人夜色视频网站在线观看| 亚洲在线播放电影| 日韩不卡免费高清视频| 精品处破学生在线二十三| 五月综合色婷婷| 日韩二区三区四区| 久久免费看av| 好吊日av在线| 欧美成人激情免费网| 可以免费看av的网址| 视频一区中文字幕| 精品在线一区| 国产在线xxx| 91精品在线免费观看| 亚洲精品午夜视频| 男人的天堂亚洲在线| 国产欧美一区二区视频 | 欧美变态挠脚心| 久久香蕉国产线看观看av| 伊人22222| 中文字幕免费一区| www.99在线| 国产探花在线精品一区二区| 91高清在线免费观看| 欧美视频久久久| 亚洲高清免费在线| 国产精品手机在线观看| 亚洲午夜一区| 国产精品一区视频| 波多野结衣乳巨码无在线观看| 日韩视频免费观看高清完整版| www日韩在线| 精品一二线国产| 中国黄色录像片| 日韩精品一区二区三区中文| 久精品免费视频| 亚洲av无码专区在线| 一区二区国产视频| 亚洲欧美日韩偷拍| 国产欧美欧美| 欧美综合激情| 日本免费在线一区| 美女视频久久黄| 亚洲国产中文字幕在线| 亚洲va韩国va欧美va| 亚洲第一黄色网址| 视频一区欧美精品| 一区二区在线观看网站| 欧美1区2区3| 国语自产精品视频在线看抢先版图片| 天堂在线视频网站| 在线影视一区二区三区| av片在线免费看| 国产精品一级在线| 免费 成 人 黄 色| 色棕色天天综合网| 国产中文字幕日韩| 国产乱妇乱子在线播视频播放网站| 亚洲精品国产福利| 特级西西444www大胆免费看| 国产精品久久久久久户外露出| 一个人看的视频www| 在线综合欧美| 午夜精品一区二区在线观看的 | 欧美日韩亚洲一区三区| 狠狠色噜噜狠狠色综合久 | 中文字幕一区二区三区久久网站 | 亚洲xxx在线| 色综合夜色一区| 男人av资源站| 99视频精品在线| 亚洲最大天堂网| 激情婷婷欧美| 日本在线观看一区| 亚洲精品在线播放| 国产成人精品最新| 欧美videosex性极品hd| 亚洲亚裔videos黑人hd| 亚洲h视频在线观看| 91精品办公室少妇高潮对白| 成人性生活毛片| 国产午夜精品美女毛片视频| 男插女视频网站| 天堂成人国产精品一区| 欧美一级中文字幕| 国产在线日韩精品| 国产精品亚洲综合| 国产精品天堂蜜av在线播放| 午夜精品久久久久久久99黑人| 婷婷在线视频| 日韩精品视频在线| 成 人 黄 色 片 在线播放| 欧美影视一区二区三区| 国产精品白浆一区二小说| 自拍偷拍亚洲激情| 久久国产柳州莫菁门| 不卡一区在线观看| www.日本久久| 奇米色一区二区| 久久成人免费观看| 欧美日本精品| 中文字幕一区二区三区精彩视频| 国产99久久精品一区二区300| 粉嫩av一区二区三区免费观看| 亚洲欧美一级| 国产精品精品久久久久久| 亚洲女同志freevdieo| 欧美精品制服第一页| 91涩漫在线观看| 亚洲图中文字幕| 久久久久久女乱国产| 日韩av中文在线| 女人18毛片一区二区三区| 欧美一区二区三区在| 91久久精品无码一区二区| 91成人国产精品| 一二三区免费视频| 91国产丝袜在线播放| 日韩在线播放中文字幕| 精品久久久久久久久久ntr影视| 国产十六处破外女视频| 亚洲色欲色欲www在线观看| 天堂网av2018| 日韩毛片在线免费观看| 老司机精品免费视频| 亚洲国产精品精华液ab| 日韩福利在线视频| 国产日本欧洲亚洲| 四季av中文字幕| 中文字幕在线不卡| 日韩av手机在线免费观看| 国产精品对白交换视频| 国产在线免费看| 亚洲欧美日韩综合aⅴ视频| 国产免费久久久久| 亚洲综合网站在线观看| 精品无码久久久久| 婷婷亚洲久悠悠色悠在线播放| 日产精品久久久久久久| 图片区小说区区亚洲影院| 在线天堂中文字幕| 在线视频你懂得一区二区三区| 波多野结衣视频网址| 欧美日韩国产综合久久 | 91美女精品| 欧美亚洲国产视频小说| 亚洲天堂一区二区| 成人h视频在线| 欧美影院视频| 好吊色欧美一区二区三区| 啪啪亚洲精品| 日本黄色播放器| 韩国av一区| 精品一卡二卡三卡| 久久电影网站中文字幕| 国产sm在线观看| 99re免费视频精品全部| 人人爽人人爽人人片| 亚洲视频一区二区免费在线观看| 精品爆乳一区二区三区无码av| 精品二区三区线观看| 中国一级片黄色一级片黄| 91精品国产欧美日韩| 午夜小视频在线播放| 中文字幕精品av| 国产极品人妖在线观看| 国产精品7m视频| 国产精品xxx在线观看| 日韩一区国产在线观看| 国一区二区在线观看| 欧美成人免费高清视频| 国产一区三区三区| 亚洲中文字幕一区| 国产精品久久久久久久久免费相片| 国产乱国产乱老熟300| 一本一道久久a久久精品| 国产视频在线观看免费| 日韩成人高清在线| 日本高清视频在线播放| 97国产在线视频| 91成人小视频| 久久综合久久久| 欧美精品国产一区二区| 欧美成人免费高清视频| 粉嫩av亚洲一区二区图片| 欧美黄色激情视频| 午夜久久久久久| 国产影视一区二区| 亚洲视频在线播放| 国产盗摄一区二区| 成人午夜一级二级三级| 九九热爱视频精品视频| 国产91沈先生在线播放| 免费成人av在线| 欧美 日本 国产| 尤物视频一区二区| 一区二区国产欧美| 国产一区二区三区18| 国产伦理精品| 国产精品v欧美精品v日韩精品| 91久久夜色精品国产按摩| 日韩免费毛片视频| www.成人网.com| 久久久精品国产sm调教网站| 欧美日韩国产一级片| 国产黄在线观看免费观看不卡| 性欧美长视频免费观看不卡| 国语精品视频| 麻豆中文字幕在线观看|