日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自绘控件的4种方法

發(fā)布時間:2025/3/12 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自绘控件的4种方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇文章主要介紹了"自繪控件的4種方法",主要涉及到自繪控件的4種方法方面的內(nèi)容,對于自繪控件的4種方法感興趣的同學(xué)可以參考一下。

??????

?????? 在您決定開發(fā) Windows 提供的常規(guī)免費自定義控件范圍之外的控件之后,您必需確定自己的控件將有多少獨到之處 — 在功能和外觀兩方面。例如,我們假定您正在創(chuàng)建一個類似于計速表的控件。由于公共控件庫 (ComCtrl32.dll) 中沒有類似的控件,您完全需要自己進行以下操作:編寫所有控件功能需要的代碼,進行繪制,默認終端用戶的交互,以及控件與其父窗口之間需要的任意消息處理。

(#add 兩方面,公共控件庫中沒有類似的 完全重寫;? 只想調(diào)整公共控件功能,則可以部分修改)

  另一方面,還包括一些您只想調(diào)整公共控件功能的情況。例如,我們假定您想創(chuàng)建一個屏蔽編輯控件,它只允許接受指定的字符。如果使用 MFC,通常涉及從 MFC 提供的類派生一個類,該類封裝了一個公共控件(在屏蔽編輯控件中,通常為 CEdit),重寫必需的虛函數(shù)(或處理指定的消息),然后加入自定義的代碼。

  本文討論的重點介于兩者之間 — 公共控件賦予您想要的大部分功能,但控件的外觀并不是您想要的。例如,列表視圖控件提供在許多視圖風(fēng)格中顯示數(shù)據(jù)列表的方式 — 小圖標、大圖標、列表和詳細列表(報告)。然而,如果您想要一個網(wǎng)格控件,那結(jié)果怎樣呢?盡管公共控件庫里沒有特別包含網(wǎng)格,但是列表視圖控件與它較為接近,它以行和列顯示數(shù)據(jù),并有一個相關(guān)的標頭控件。因此,許多人以一個標準的列表視圖控件為起點創(chuàng)建自己的網(wǎng)格控件,然后重寫該控件及其子項的呈現(xiàn)方式或繪制方式。

   即使“只”進行繪制,您仍然有至少四種選項可用,它們都具有鮮明的優(yōu)缺點:

·處理 WM_PAINT
·所有者繪制(owner draw)
·自定義繪制(custom draw)
·處理 WM_CTLCOLOR

?

  處理 WM_PAINT

  最極端的選擇是執(zhí)行一個 WM_PAINT 處理程序,并且自己完成所有的繪制。這意味著,您的代碼將需要進行一些與呈現(xiàn)控件相關(guān)的瑣事 — 創(chuàng)建適當(dāng)?shù)脑O(shè)備上下文(一個或多個),決定控件的大小和位置,繪制控件等。在繪制過程中,很少需要這種級別的控件。

  所有者繪制

  控制控件繪制的另一種方法是利用所有者繪制。事實上,您也許聽開發(fā)人員提到過所有者繪制控件,因為它是用于開發(fā)自定義控件最普通的技術(shù)。該技術(shù)普遍使用的主要原因在于,Windows 可為您提供很多幫助。在呈現(xiàn)控件的那一刻,Windows 就已經(jīng)創(chuàng)建并填寫了設(shè)備上下文,決定了控件的大小和位置,并且向您傳遞信息以使您了解此刻繪制的需求。對于列表控件(例如,列表框和列表視圖),Windows 將為列表中的每一項調(diào)用繪制代碼,這意味著您只需繪制這些項,而無需考慮控件的其他方面。注意,所有者繪制可用于大多數(shù)控件。然而,它不能用于編輯控件;并且考慮到列表控件,它只能用于報表視圖樣式。

  自定義繪制

  對于繪制自己的控件而言,這可能是最少為人所知的技術(shù)。事實上,許多技術(shù)能力較高的開發(fā)人員也混淆了術(shù)語所有者繪制 (owner-draw) 和自定義繪制 (custom-draw)。關(guān)于自定義控件,首先需要了解,它僅針對于指定的公共控件:標頭、列表視圖、rebar、工具欄、工具提示、跟蹤條和樹視圖。此外,盡管所有者繪制只允許繪制報告視圖風(fēng)格的列表視圖控件,而自定義繪制則使您能夠處理列表視圖控件所有視圖風(fēng)格的繪制。使用自定義繪制的另一個明顯優(yōu)勢是,您可以對希望繪制的內(nèi)容進行嚴格挑選。實現(xiàn)方式是,在控件繪制的每個階段由 Windows 向代碼發(fā)送一個消息。這樣,您可以決定在每個階段是自己進行所有的繪制工作,增加默認的繪制,還是允許 Windows 為該階段執(zhí)行所有的繪制。(鑒于自定義繪制是本文的一個主題,因此您很快會看到它的工作方式。)

  處理 WM_CTLCOLOR消息

這可能是幫助決定如何呈現(xiàn)控件最簡單的方式。正如消息名所指,當(dāng)要繪制一個控件,并且它能讓您的代碼決定要使用的畫筆時,發(fā)送 WM_CTLCOLOR 消息(#add 似乎不對,應(yīng)該用消息反射)。通常情況下,如果您只想更改控件的顏色(#addSetTextColor SetBkColor),并且不提供除控件本身之外的更多功能,則使用該技術(shù)。此外,對于由 Internet Explorer 引入的公共控件(列表視圖、樹視圖、rebar 等),不發(fā)送該消息,并且它只與標準控件(編輯、列表框等)協(xié)同使用。

CTLCOLOR_STATIC ? ? ? ? ? ? ? Static control

CTLCOLOR_BTN ? ? ? ? ? ? ? ? ? ? Button control

CTLCOLOR_EDIT ? ? ? ? ? ? ? ? ? ?Edit control

CTLCOLOR_LISTBOX ? ? ? ? ? ? List-box control

CTLCOLOR_SCROLLBAR ? ?Scroll-bar control

CTLCOLOR_DLG ? ? ? ? ? ? ? ? ? ?Dialog box

CTLCOLOR_MSGBOX ? ? ? ? ? ?Message box

不會為組合框中的下拉列表框調(diào)用OnCtlColor函數(shù),因為下拉列表框?qū)嶋H上是組合框的子窗口,而不是窗口的子窗口。要改變下拉列表框的顏色,創(chuàng)建一個CComboBox,在重載的OnCtlColor中的nCtlColor參數(shù)中檢查CTLCOLOR_LISTBOX。在這個處理函數(shù)中,為設(shè)置文本的背景必須使用SetBkColor成員函數(shù)。

自定義繪制:

  既然您已經(jīng)了解了繪制控件可用的各種選項(包括使用自定義繪制的好處),那么,讓我們來看看實現(xiàn)一個自定義繪制控件需要的三個主要步驟。

·執(zhí)行一個 NM_CUSTOMDRAW 消息處理程序。
·指定處理所需的繪制階段。
·篩選特定的繪制階段(在這些階段中,您需要加入自己的特定于控件的繪制代碼)。

?

  1,執(zhí)行一個NM_CUSTOMDRAW 消息處理程序

  當(dāng)需要繪制一個公共控件時,MFC 會將控件的自定義繪制通知消息(最初發(fā)送到控件的父窗口)以 NM_CUSTOMDRAW 消息的形式反饋給控件。以下是一個 NM_CUSTOMDRAW 處理程序的示例。

void CMyCustomDrawControl::OnCustomDraw(NMHDR* pNMHDR, LRESULT*pResult)
{
 LPNMCUSTOMDRAW pNMCD =reinterpret_cast(pNMHDR);
 ...
}

  正如您所見,NM_CUSTOMDRAW 處理程序?qū)⒁粋€指針傳遞給 NMHDR 類型的結(jié)構(gòu)。然而,該值不足以用于象 NMHDR 這樣只包含三個成員(hwndFrom、idFrom 和 code)的結(jié)構(gòu)。

  因此,您通常需要將該結(jié)構(gòu)指針轉(zhuǎn)換為信息量更大的結(jié)構(gòu) — LPNMCUSTOMDRAW。LPNMCUSTOMDRAW指向 NMCUSTOMDRAW,它包含諸如 dwDrawStage、dwItemSpec 和 uItemState 這樣的成員 — 它們是決定當(dāng)前繪制階段及確切繪制(例如,控件本身、或控件的一個項目或子項)所必需的。

  這里值得注意的是,還可以將 NMHDR 指針指向特定于正在繪制控件的類型的結(jié)構(gòu)。表 1 顯示控件的一個列表及其相關(guān)的自定義繪制結(jié)構(gòu)類型名。

  表 1:控件及其相關(guān)的自定義繪制結(jié)構(gòu)

控件

結(jié)構(gòu)(在 commctrl.h 中定義)

Rebar、Trackbar、AuthTicket、My.Resources、My.Settings、My.User 和 My.WebServices。

NMCUSTOMDRAW

List-view

NMLVCUSTOMDRAW

Toolbar

NMTBCUSTOMDRAW

Tooltip

NMTTCUSTOMDRAW

Tree-view

NMTVCUSTOMDRAW

  2,指定處理所需的繪制階段

  正如我在前面提到的,繪制一個控件存在一些“階段”。特別是,您可以將繪制過程理解為一系列階段,其中控件通知其父窗口需要繪制的內(nèi)容。事實上,控件甚至?xí)诶L制控件及其各項前后發(fā)送一個通知,從而讓編程人員更好地控制該過程。

  在所有情況下,單一的 NM_CUSTOMDRAW 處理程序在每個繪制階段都進行調(diào)用。然而,謹記:自定義繪制允許您在自己的繪制中合并默認的控件繪制,您需要指定您將處理哪個繪制階段。這通過設(shè)置 NM_CUSTOMDRAW 處理程序的第二個參數(shù) (pResult) 完成。事實上,如果您從未設(shè)置該值,則用初始階段的 CDDS_PREPAINT 調(diào)用函數(shù)后,您的函數(shù)將不再被調(diào)用!

  從技術(shù)上講,只有兩個階段指定需要的繪制階段(CDDS_PREPAINT 和 CDDS_ITEMPREPAINT),它們影響發(fā)送通知消息的內(nèi)容。然而,通常只在處理程序的最后指定代碼將處理的繪制階段。表 2 列出用于指定所需繪制階段(代碼關(guān)注的)的值。

  表 2:自定義繪制返回標志

自定義繪制返回標志

含義

CDRF_DEFAULT

指示控件自行繪制。該值為默認值,不應(yīng)該將它與其他值組合在一起。

CDRF_SKIPDEFAULT

用于指定控件根本不進行任何繪制。

CDRF_NEWFONT

當(dāng)代碼更改繪制項/子項的字體時使用。

CDRF_NOTIFYPOSTPAINT

使通知信息在控件或每個項/子項繪制后發(fā)送。

CDRF_NOTIFYITEMDRAW

指出項(或子項)將進行繪制。注意,它下面的值與 CDRF_NOTIFYSUBITEMDRAW 相同。

CDRF_NOTIFYSUBITEMDRAW

指出子項(或項)將進行繪制。注意,它下面的值與 CDRF_NOTIFYITEMDRAW 相同。

CDRF_NOTIFYPOSTERASE

當(dāng)刪除控件后需要通知代碼時使用。

  以下為一個示例,其中的代碼指定,當(dāng)繪制控件的項 (CDRF_NOTIFYITEMDRAW) 及子項(CDRF_NOTIFYPOSTPAINT),以及繪制完成時,應(yīng)該調(diào)用 NM_CUSTOMDRAW 處理程序。

void CListCtrlWithCustomDraw::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT*pResult)
{
 LPNMCUSTOMDRAW pNMCD =reinterpret_cast(pNMHDR);
 ...
 *pResult = 0; // Initialize value
 *pResult |= CDRF_NOTIFYITEMDRAW;
 *pResult |= CDRF_NOTIFYSUBITEMDRAW;
 *pResult |= CDRF_NOTIFYPOSTPAINT;
}

  3,篩選指定的繪制階段

  一旦指定要關(guān)注的階段后,您需要處理這些階段。因為繪制過程的每個階段只有一個消息要發(fā)送,慣例是執(zhí)行一個 switch 語句以決定準確的繪制階段。不同的繪制階段由以下標志定義:

CDDS_PREPAINT
CDDS_ITEM
CDDS_ITEMPREPAINT
CDDS_ITEMPOSTPAINT
CDDS_ITEMPREERASE
CDDS_ITEMPOSTERASE
CDDS_SUBITEM
CDDS_POSTPAINT
CDDS_PREERASE
CDDS_POSTERASE

  對于一個 CListCtrl 派生的類,有一個 NM_CUSTOMDRAW 處理程序的示例,其中您可以發(fā)現(xiàn),代碼決定當(dāng)前繪制階段的方式:

void CMyCustomDrawControl::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
 LPNMCUSTOMDRAW pNMCD =reinterpret_cast(pNMHDR);
 switch(pNMCD->dwDrawStage)
 {
  case CDDS_PREPAINT:
   ...
   break;
  case CDDS_ITEMPREPAINT:
   ...
   break;
  case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
   ...
   break;
  ...
 }
 *pResult = 0;
}

  注意,為了決定子項(例如,列表視圖控件)繪制的階段,您必需使用按位 or 操作符,它有兩個值:其中一個為 CDDS_ITEMPREPAINT 或者CDDS_ITEMPOSTPAINT,另一個為 CDDS_SUBITEM。

  要說明它,我們假定您想在繪制列表視圖項之前進行一些處理。將編寫 switch 語句來處理 CDDS_ITEMPREPAINT。

case CDDS_ITEMPREPAINT:
...
break;

  然而,如果是您所關(guān)注子項的預(yù)繪制階段,則將如下操作:

case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
...
break;

示例:創(chuàng)建一個列表視圖控件自定義繪制控件

  如前面提到的,您可以完全控制控件及其項的繪制,或者僅執(zhí)行一小部分特定于應(yīng)用程序的繪制,并讓控件繼續(xù)進行。本文的焦點更多地偏重于控件繪制技術(shù)而非高級的繪制技術(shù),我們將演練一個簡單的示例,其中列表視圖控件是一個自定義的繪制,因此項的文本將在創(chuàng)建拼接外觀的交替單元中顯示為不同的顏色。

  ·創(chuàng)建一個基于 Visual C++ 2005 對話框的項目,名為ListCtrlColor。

  ·從 Class View 中選擇 Project 菜單選項,并單擊 Add Class 調(diào)用 Add Class 對話框。

  ·從分類列表中選擇 MFC,然后從模板列表中選擇 MFC Class。

  ·單擊 Add 按鈕,調(diào)用 MFC Class Wizard 對話框。

  ·對于 Class name,鍵入值 CListCtrlWithCustomDraw 并選擇 CListCtrl的 Base class。

  ·單擊 Finish 按鈕,生成類的標頭和執(zhí)行文件。

  ·對于 Class View,右鍵單擊 CListCtrlWithCustomDraw 類,并選擇Properties 上下文菜單選項。

  ·顯示 Properties 窗口時,單擊頂部的 Messages 按鈕,顯示一個兩列的消息列表,您可以為其實現(xiàn)處理程序。

  ·在消息列表中單擊 NM_CUSTOMDRAW 項,然后下拉第二列的組合框箭頭,并選擇值 OnNMCustomdraw。

  ·現(xiàn)在,處理繪制代碼。這里,我們只簡單處理項和子項預(yù)繪制階段,指定基于當(dāng)前行(項)和列(子項)的文本和背景色。要進行此操作,按如下所示修改 OnNMCustomdraw 函數(shù):

void CListCtrlWithCustomDraw::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT*pResult)
{
 LPNMLVCUSTOMDRAW lpLVCustomDraw =reinterpret_cast(pNMHDR);
 switch(lpLVCustomDraw->nmcd.dwDrawStage)
 {
  case CDDS_ITEMPREPAINT:
  case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
   if (0 == ((lpLVCustomDraw->nmcd.dwItemSpec+ lpLVCustomDraw->iSubItem) % 2))
   {
    lpLVCustomDraw->clrText =RGB(255,255,255); // white text
    lpLVCustomDraw->clrTextBk =RGB(0,0,0); // black background
   }
   else
   {
    lpLVCustomDraw->clrText =CLR_DEFAULT;
    lpLVCustomDraw->clrTextBk =CLR_DEFAULT;
   }
   break;
   default: break;
 }
 *pResult = 0;
 *pResult |= CDRF_NOTIFYPOSTPAINT;
 *pResult |= CDRF_NOTIFYITEMDRAW;
 *pResult |= CDRF_NOTIFYSUBITEMDRAW;
}

  現(xiàn)在,我們來測試新控件。要進行此操作,您只需使用 CListCtrlWithCustomDraw 類將列表視圖控件放在對話框中,并對其進行子類派生。下面是完成該操作的步驟。

  ·在 Resource 視圖中,打開應(yīng)用程序的主對話框 (IDD_LISTCTRLCOLOR_DIALOG)。

  ·從 Toolbox 中,將一個 List Control 拖放到該對話框。

  ·右鍵單擊列表控件,并選擇 Properties 上下文菜單選項。

  ·將 View 屬性設(shè)置為 Report。

  ·右鍵單擊控件,并選擇 Add Variable 上下文菜單選項。

  ·出現(xiàn) Add Member Variable Wizard 對話框時,指定m_lstBooks 的 Variable name,并單擊 Finish 按鈕。

  ·這時,您就有了一個 CListCtrl 派生類 (m_lstBooks),它將對話框上的列表視圖控件進行子類派生。然而,m_lstBooks 需要從最新創(chuàng)建的 CListCtrlWithCustomDraw 派生,以便于調(diào)用您的繪制代碼。因此,打開對話框的標題文件 (ListCtrlColorDlg.h),將 m_lstBooks 更改為 CListCtrlWithCustomDraw 類型。

  ·在 CListCtrlColorDlg 類開始之前,添加以下指令。

#include"ListCtrlWithCustomDraw.h"

  ·將下面的代碼添加到對話框的 OnInitDialog 成員函數(shù),這樣我們就能夠看到一些列表視圖行。

// Insert the columns
m_lstBooks.InsertColumn(0, _T("Author"));
m_lstBooks.InsertColumn(1, _T("Book"));
// Define the data
static struct
{
 TCHAR m_szAuthor[50];
 TCHAR m_szTitle[100];
} BOOK_INFO[] = {
 _T("Tom Archer"),_T("Visual C++.NET Bible"),
 _T("Tom Archer"),_T("Extending MFC with the .NET Framework"),
 _T("Brian Johnson"),_T("XBox 360 For Dummies")
};
// Insert the data
int idx;
for (int i = 0; i < sizeof BOOK_INFO / sizeof BOOK_INFO[0]; i++)
{
 idx = m_lstBooks.InsertItem(i,BOOK_INFO[i].m_szAuthor);
 m_lstBooks.SetItemText(i, 1,BOOK_INFO[i].m_szTitle);
}

  ·現(xiàn)在,建立并運行應(yīng)用程序。圖 1 為應(yīng)用程序外觀的一個示例。


  圖 1. 自定義繪制示例應(yīng)用程序

  小結(jié)

  當(dāng) Windows 首次作為“下一代”操作系統(tǒng)引入到應(yīng)用程序開發(fā)之中時,它作為新圖形用戶界面的一個主要論據(jù)就是其一致性。該論據(jù)的要點所在是其具有一個通用的外觀:統(tǒng)一的菜單項、通用控件等。這一通用性的感覺可能會一直延續(xù),直到有第二家公司想設(shè)計其自己的應(yīng)用程序。簡單說,提供外觀與其他應(yīng)用程序雷同的應(yīng)用程序,任何公司都不會逃離這一怪圈。

  要建立一個唯一的且讓人過目難忘的用戶界面,其中一種方式是為應(yīng)用程序設(shè)計并開發(fā)自定義的控件。希望本文能對您有所幫助,現(xiàn)在,您了解到一種非常強大的技術(shù),它使您的應(yīng)用程序能從眾多競爭對手的應(yīng)用程序中脫穎而出。

OWNER?DRAW實現(xiàn)自繪按鈕

一、準備工作

?在開始編碼之前,首先應(yīng)該確定好,更準確的說應(yīng)該是設(shè)計好按鈕在各種狀態(tài)下的外觀。按鈕控件的幾中基本狀態(tài)包括:

Normal狀態(tài),就是按鈕一開始顯示時的樣子。

Over狀態(tài),鼠標指針移動到按鈕上面時按鈕顯示的樣子。

Down狀態(tài),按下按鈕時顯示的樣子。

Focus狀態(tài),按鈕按下后松開的樣子,例如標準按鈕按下松開之后會看到按鈕內(nèi)部有一個虛線框。

Disable狀態(tài),當(dāng)然就是按鈕被設(shè)置成無效的時候的樣子啦。

?

我參考了一下WindowsXP中普通按鈕的實際樣子,設(shè)計出XP按鈕各種狀態(tài)的外觀,如下圖所示:

?

至于Down狀態(tài)主要是在Over狀態(tài)的基礎(chǔ)上將文字往右下的方向稍微平移,以實現(xiàn)下壓的效果。

?

?二、實現(xiàn)原理及難點

?

下面我們開始類的創(chuàng)建,在Workspace的ClassView頁中右擊列表樹的根結(jié)點,選擇New Class…

?

??

在彈出窗口中進行派生類的定義,如下圖所示,注意,你需要填寫的只有Name和Base class兩項,其余的選項保持默認值就可以了。

??

??下面簡要敘述一下按鈕的實現(xiàn)原理

?

1. 在控件初始化時為按鈕添加Owner ?Draw的屬性。這是因為在MFC中,要想激活控件的自繪功能,要求該控件的屬性中必須包含屬性值BS_OWNERDRAW,這一步我們可以通過類向?qū)?CXPButton類添加PreSubclassWindow()函數(shù),在該函數(shù)中完成屬性值的設(shè)置。當(dāng)激活控件的自繪功能之后,每次控件狀態(tài)改變的時候都會運行函數(shù)DrawItem(),該函數(shù)的作用就是繪制控件在各種狀態(tài)下的外觀。

?

2. 添加WM_MOUSELEAVE消息函數(shù),當(dāng)鼠標指針離開按鈕時,觸發(fā)該消息函數(shù),我們在函數(shù)中添加代碼,通知DrawItem函數(shù)鼠標指針已經(jīng)離開了,讓按鈕重繪。

?

3. 添加WM_MOUSEHOVER消息函數(shù),當(dāng)鼠標指針位于按鈕之上時,觸發(fā)該消息函數(shù),我們在函數(shù)重添加代碼,通知DrawItem函數(shù)鼠標指針現(xiàn)在正在按鈕的上面,讓按鈕重繪。

?

4. 添加DrawItem函數(shù)。在DrawItem中根據(jù)按鈕當(dāng)前的狀態(tài)繪制按鈕的外觀??梢哉f自繪控件的大部分功能都是在這個函數(shù)中實現(xiàn)的。DrawItem函數(shù)包含了一個LPDRAWITEMSTRUCT的指針,本篇會在稍后予以講解。

?

這里有兩個難點,首先是WM_MOUSELEAVE和 WM_MOUSEHOVER不是標準的Windows消息函數(shù),它們不能通過類向?qū)硖砑?#xff0c;所有的添加工作都需要通過手工輸入代碼來完成。另一個難點是 DrawItem中的LPDRAWITEMSTRUCT指針,它指向了一個DRAWITEMSTRUCT的結(jié)構(gòu),這個結(jié)構(gòu)中包含了控件的各種細節(jié),為我們提供了實現(xiàn)自繪功能的必要信息。

難點一:

事實上WM_MOUSELEAVE和WM_MOUSEHOVER兩個Windows消息是通過WM_MOUSEMOVE消息觸發(fā)的,而 WM_MOUSEMOVE是標準的Windows消息,因此我們可以通過類向?qū)頌镃XPButton類添加WM_MOUSEMOVE消息函數(shù)。

??

函數(shù)的代碼見如下,這段代碼非常有用,在其它的自繪控件中,如果想觸發(fā)WM_MOUSELEAVE和WM_MOUSEHOVER消息,也是使用類似的方法實現(xiàn)的。

?

voidCXPButton::OnMouseMove(UINT nFlags, CPoint point)

{

?????? // TODO: Add your message handler codehere and/or call default

?????? if (!m_bTracking)

?????? {

????????????? TRACKMOUSEEVENT tme;

????????????? tme.cbSize = sizeof(tme);

????????????? tme.hwndTrack = m_hWnd;

????????????? tme.dwFlags = TME_LEAVE |TME_HOVER;

????????????? tme.dwHoverTime = 1;

?????????????m_bTracking = _TrackMouseEvent(&tme);

?????? }

?????? CButton::OnMouseMove(nFlags, point);

}

我們接著添加WM_MOUSELEAVE和WM_MOUSEHOVER消息消息函數(shù)。在CXPButton類的聲明中(即在 XPButton.h文件中)找到afx_msg void OnMouseMove(UINT nFlags, CPoint point);的函數(shù)聲明,緊接其下輸入

?

afx_msgLRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);

afx_msgLRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);

?

然后在XPButton.cpp文件中找到ON_WM_MOUSEMOVE(),緊接其后輸入

ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)

ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)

?

難點二:

下面我們看看DRAWITEMSTRUCE結(jié)構(gòu)為我們提供了哪些有用信息呢?

DRAWITEMSTRUCT結(jié)構(gòu)的定義如下:

?

typedefstruct ?tagDRAWITEMSTRUCT

{

??? UINT??CtlType;????????????????????? //控件類型

??? UINT??CtlID;??????????????????????? //控件ID

??? UINT??itemID;?????????????????????? //菜單項、列表框或組合框中某一項的索引值

??? UINT??itemAction;?????????????????? ?//控件行為

??? UINT??itemState;???????????????????? //控件狀態(tài)

??? HWND??hwndItem;???????????????? ??//父窗口句柄或菜單句柄

??? HDC???hDC;??????????????????????? //控件對應(yīng)的繪圖設(shè)備句柄

??? RECT??rcItem;?????????????????????? //控件所占據(jù)的矩形區(qū)域

??? DWORD?itemData;????????????????? ?//列表框或組合框中某一項的值

}DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT;

其實不僅是按鈕控件,其它控件,如ComboBox、ListBox、StaticText等都是通過DRAWITEMSTRUCT來記錄控件信息的。關(guān)于這個結(jié)構(gòu)的詳細文檔可參考本篇的附錄。

?

也許你早已看到許多自繪按鈕的例子,實際上自繪按鈕本身的函數(shù)結(jié)構(gòu)都是差不多的,它們顯示效果的區(qū)別主要取決于代碼編寫者對GDI作圖函數(shù)的運用與掌握程度。有興趣的朋友可以研究一下CXPButton類中DrawItem函數(shù)的數(shù)據(jù)結(jié)構(gòu),其實只要修改一下其中GDI繪圖函數(shù)的部分代碼,馬上又能做出另一個自繪按鈕控件了。

?

?三、按鈕類的使用

?

下面演示CXPButton類的使用。往對話框中添加一個按鈕控件,假設(shè)它的ID值為IDC_BUTTON1。進入類向?qū)?#xff08;Class Wizard)的Member Variables屬性頁,為IDC_BUTTON1添加一個變量m_btnNormal。確定退出后再進行編譯,就可以看到重新定義過XP風(fēng)格按鈕了。

?

?如果你是之間把CXPButton的源文件引入自己的工程中的,那么在上圖的Variable type中是看不到CXPButton選項的。但是可以通過以下方法加入:

?

1. 首先保存工程后退出。

2. 在工程的目錄下找到一個后綴名為.clw的文件,將其刪除。但是為了以防萬一還是建議你實現(xiàn)備份一下。

3. 重新打開工程,進入類向?qū)?#xff0c;此時會看到一下一個彈出對話框,我們選擇“是(Yes)”。

???

4. 再選擇“Add All”,這樣我們就可以在類向?qū)е惺褂肅XPButton的變量類型了。

?

?四、小結(jié)與提示

?

對于按鈕來說,當(dāng)按鈕上面任何可見的部分發(fā)生變換的時候,都要調(diào)用DrawItem函數(shù)進行重繪。自繪制按鈕必須設(shè)定BS_OWNERDRAW的屬性,設(shè)置的代碼在PreSubclassWindows函數(shù)中完成。另外為了防止系統(tǒng)字體設(shè)置的變化影響控件的表達效果,還可以在該函數(shù)中為控件指定某種固定的字體。但是要注意的是這個

讓我們來回顧一下實現(xiàn)自繪按鈕的基本步驟:

a. 確定設(shè)計方案;

b. 初始化,但是記得要在函數(shù)退出前恢復(fù)先前的GDI對象,并釋放所占領(lǐng)的資源;

c. 添加相應(yīng)消息函數(shù);

d. 添加繪圖函數(shù)DrawItem,在DrawItem中作圖的順序一般是先畫外邊框,再上底色,接著寫文字,最后是畫內(nèi)邊框。不過有些人也喜歡把邊框放到最后畫,這問題不大。

?

?五、附錄

?

DRAWITEMSTRUCT結(jié)構(gòu)文檔 (根據(jù)Msdn翻譯)

?

DRAWITEMSTRUCT

?

DRAWITEMSTRUCT為需要自繪的控件或者菜單項提供了必要的信息。在需要繪制的控件或者菜單項對應(yīng)的WM_DRAWITEM消息函數(shù)中得到一個指向該結(jié)構(gòu)的指針。 DRAWITEMSTRUCT結(jié)構(gòu)的定義如下:

?

typedef ?struct ?tagDRAWITEMSTRUCT

{

UINTCtlType ;

UINTCtlID ;

UINTitemID ;

UINTitemAction ;

UINTitemState ;

HWNDhwndItem ;

HDC hDC;

RECTrcItem ;

ULONG_PTRitemData ;

} DRAWITEMSTRUCT;

?

結(jié)構(gòu)成員:

?

CtlType

指定了控件的類型,其取值如下表所示。

取值

描述

ODT_STATIC

靜態(tài)文本控件

ODT_BUTTON

按鈕控件

ODT_COMBOBOX

組合框控件

ODT_LISTBOX

列表框控件

ODT_LISTVIEW

列表視圖控件

ODT_MENU

菜單項

ODT_TAB

Tab控件

?

CtlID

指定了自繪控件的ID值,而對于菜單項則不需要使用該成員

?

itemID

表示菜單項ID,也可以表示列表框或者組合框中某項的索引值。對于一個空的列表框或組合框,該成員的值為–1。這時應(yīng)用程序只繪制焦點矩形(該矩形的坐標由rcItem 成員給出)雖然此時控件中沒有需要顯示的項,但是繪制焦點矩形還是很有必要的,因為這樣做能夠提示用戶該控件是否具有輸入焦點。當(dāng)然也可以設(shè)置itemAction 成員為合適值,使得無需繪制焦點。

?

itemAction

指定繪制行為,其取值可以為下表中所示值的一個或者多個的聯(lián)合。

?

取值

描述

ODA_DRAWENTIRE

當(dāng)整個控件都需要被繪制時,設(shè)置該值

ODA_FOCUS

如果控件需要在獲得或失去焦點時被繪制,則設(shè)置該值。此時應(yīng)該檢查itemState成員,以確定控件是否具有輸入焦點。

ODA_SELECT

如果控件需要在選中狀態(tài)改變時被繪制,則設(shè)置該值。此時應(yīng)該檢查itemState 成員,以確定控件是否處于選中狀態(tài)。

?

itemState

指定了當(dāng)前繪制操作完成后,所繪項的可見狀態(tài)。例如,如果菜單項應(yīng)該被灰色顯示,則可以指定ODS_GRAYED狀態(tài)標志。其取值可以為下表中所示值的一個或者多個的聯(lián)合。

?

取值

描述

ODS_CHECKED

如果菜單項將被選中,則可設(shè)置該值。該值只對菜單項有用。

ODS_COMBOBOXEDIT

在自繪組合框控件中只繪制選擇區(qū)域。

ODS_DEFAULT

默認值。

ODS_DISABLED

如果控件將被禁止,則設(shè)置該值。

ODS_FOCUS

如果控件需要輸入焦點,則設(shè)置該值。

ODS_GRAYED

如果控件需要被灰色顯示,則設(shè)置該值。該值只在繪制菜單時使用。

ODS_HOTLIGHT

Windows 98/Me, Windows 2000/XP: 如果鼠標指針位于控件之上,則設(shè)置該值,這時控件會顯示高亮顏色。

ODS_INACTIVE

Windows 98/Me, Windows 2000/XP: 表示沒有激活的菜單項。

ODS_NOACCEL

Windows 2000/XP: 控件是否有快速鍵盤。

ODS_NOFOCUSRECT

Windows 2000/XP: 不繪制捕獲焦點的效果。

ODS_SELECTED

選中的菜單項。

?

hwndItem

指定了組合框、列表框和按鈕等自繪控件的窗口句柄;如果自繪的對象時菜單項,則表示包含該菜單項的菜單句柄。

?

hDC

指定了繪制操作所使用的設(shè)備環(huán)境。

?

rcItem

指定了將被繪制的矩形區(qū)域。這個矩形區(qū)域就是上面hDC的作用范圍。系統(tǒng)會自動裁剪組合框、列表框或按鈕等控件的自繪制區(qū)域以外的部分。也就是說 rcItem中的坐標點(0,0)指的就是控件的左上角。但是系統(tǒng)不裁剪菜單項,所以在繪制菜單項的時候,必須先通過一定的換算得到該菜單項的位置,以保證繪制操作在我們希望的區(qū)域中進行。

?

itemData

對于菜單項,該成員的取值可以是由

CMenu::AppendMenu、

CMenu::InsertMenu或者

CMenu::ModifyMenu

等函數(shù)傳遞給菜單的值。

?

對于列表框或這組合框,該成員的值可以為由

ComboBox::AddString、

CComboBox::InsertString、

CListBox::AddString或者

CListBox::InsertString

等傳遞給控件的值。

?

如果ctlType 的取值是ODT_BUTTON或者ODT_STATIC, itemData的取值為0。

總結(jié)

以上是生活随笔為你收集整理的自绘控件的4种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

久久综合天天 | 在线观看一区二区视频 | 日韩在线视频观看免费 | 久久精品国产精品亚洲 | 成人免费xxx在线观看 | 欧美精品小视频 | 国产精品嫩草69影院 | 女人18片毛片90分钟 | 天天综合导航 | 91亚洲影院| 日韩在观看线 | 免费在线激情视频 | 国产免费人成xvideos视频 | 久久久久久久国产精品 | 亚洲精选视频免费看 | 亚洲精品视频大全 | 天天综合中文 | 久久精品一级片 | 97精品国产一二三产区 | 久二影院| 欧美日韩综合在线观看 | 午夜狠狠干 | 福利视频| 在线播放 日韩专区 | 中文在线字幕免费观看 | 成人在线视频观看 | 久射网 | 视频精品一区二区三区 | 黄污视频大全 | 黄色影院在线免费观看 | 国产高清视频免费在线观看 | 成年人免费电影 | 国产午夜精品福利视频 | 天天综合网~永久入口 | 日本高清中文字幕有码在线 | 国产免费一区二区三区最新6 | 国产99久久久国产精品免费看 | 激情综合网天天干 | 欧美精品免费一区二区 | 久草资源免费 | 中文字幕免费国产精品 | 久久精品看 | 九九热在线观看 | 久久九精品 | av大片网址 | 91麻豆文化传媒在线观看 | 一区二区精品在线 | 色福利网| 婷婷激情五月综合 | 天天操天天操天天操天天操 | 亚洲精品麻豆视频 | 亚洲精品午夜久久久久久久久久久 | 欧美亚洲一区二区在线 | 国产精品免费一区二区三区 | 毛片随便看 | 国内精品中文字幕 | 探花视频免费在线观看 | 欧美精品亚洲二区 | 免费av网址大全 | 亚洲v欧美v国产v在线观看 | 久热久草| 国产最新精品视频 | 91丨九色丨国产在线 | 国产精品久久久久婷婷 | 国产护士在线 | 91观看视频 | 韩日精品在线 | 中文字幕综合在线 | 国产精品亚洲视频 | 日韩精品视频网站 | 99久久久久国产精品免费 | 欧美日韩中文字幕综合视频 | 亚洲国产中文字幕在线 | 99久热在线精品视频观看 | 激情综合五月 | 日韩高清在线一区二区三区 | 三级av免费看 | 亚洲年轻女教师毛茸茸 | 国产精品99久久久精品 | 国产1级毛片 | 久久人人97超碰com | 亚洲精品字幕在线 | 又黄又爽又色无遮挡免费 | 一区二区三区韩国免费中文网站 | 日本三级国产 | 高清av中文在线字幕观看1 | 久久成人毛片 | 国产不卡精品视频 | www.色综合.com | 午夜在线看片 | 久久久一本精品99久久精品66 | 日韩色一区二区三区 | www.夜夜夜| 日本精品久久久久 | 伊人五月天综合 | 亚洲 综合 国产 精品 | 久久精品看片 | 国产精品美女毛片真酒店 | 日韩视频一 | 久久精品小视频 | 久久免费激情视频 | 国产第一页福利影院 | 国产手机视频在线播放 | 五月婷激情| 久草视频在线看 | 伊人夜夜 | 国产精品高清免费在线观看 | 亚洲精品玖玖玖av在线看 | 欧美成人h版电影 | 97超碰人人澡人人爱学生 | 色悠悠久久综合 | 久久草在线视频国产 | 黄色三级网站 | 日日麻批40分钟视频免费观看 | 日日操日日操 | 久久免费视屏 | 日韩欧美视频 | 在线免费av播放 | 国产精品第一页在线观看 | 久久精品香蕉 | 黄色av高清 | 午夜国产影院 | 日韩视频一区二区在线观看 | 国产 一区二区三区 在线 | 91在线视频免费91 | 亚洲精品免费在线播放 | 97香蕉超级碰碰久久免费软件 | 狠狠撸电影| 亚洲精品在线一区二区三区 | 免费十分钟 | 久久精品5| 美女精品在线观看 | 国产免费又黄又爽 | 久久久久婷 | 日韩mv欧美mv国产精品 | 欧美狠狠色 | 国产精品久久久久久久久久久久 | 91插插视频 | www.天天色.com | 五月婷婷伊人网 | 国产亚洲成人网 | 国产一级在线观看视频 | 日韩三级中文字幕 | 99热在线观看免费 | 免费av的网站 | 国产成人黄色 | 69成人在线| 欧美一级日韩三级 | 国产 日韩 欧美 自拍 | 蜜臀久久99精品久久久无需会员 | 亚洲午夜精品久久久久久久久 | 日本在线免费看 | 深爱婷婷久久综合 | 欧美日韩在线电影 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲综合小说电影qvod | a电影免费看 | 青青久草在线 | 日本最新高清不卡中文字幕 | 国产精品无av码在线观看 | 美女黄久久 | 开心综合网| 91精品国产欧美一区二区成人 | 91九色在线 | 丁香在线观看完整电影视频 | 亚洲高清色综合 | 久久婷婷亚洲 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 黄色视屏av | 天天操天天操天天操天天操天天操天天操 | 亚洲区另类春色综合小说 | 亚洲精品免费在线播放 | 亚洲欧洲国产日韩精品 | 五月综合激情婷婷 | www.伊人网 | 免费福利在线 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产明星视频三级a三级点| 日韩欧美一区二区不卡 | 国产网红在线观看 | 色婷婷婷| www最近高清中文国语在线观看 | 欧美一区二区三区四区夜夜大片 | 亚洲最大av网 | 精品国产乱码久久久久久浪潮 | av在线播放快速免费阴 | 久久久久国产精品免费 | 国产va在线 | 亚洲国产精品va在线看 | 在线观看黄网 | 在线观看免费高清视频大全追剧 | 免费观看www视频 | 日韩黄色一区 | 日韩二区三区在线观看 | 国产麻豆传媒 | 99热这里是精品 | 99精品国产99久久久久久97 | 欧美性色网站 | 操操操日日日干干干 | av资源免费在线观看 | 国产亚洲精品久久19p | 天天操天天色天天射 | 国产一区在线观看视频 | 亚洲精品白浆高清久久久久久 | 国产91在| 蜜臀精品久久久久久蜜臀 | 激情视频免费观看 | 国产精品久久久免费看 | 天堂av在线 | 中文资源在线观看 | 国产精品视频永久免费播放 | 国产精品扒开做爽爽的视频 | 日韩一区正在播放 | 欧美激情奇米色 | 国产精品99久久99久久久二8 | 午夜久久影院 | 三上悠亚一区二区在线观看 | 午夜在线免费观看视频 | 亚洲日本在线视频观看 | 国产一区二区三区免费在线观看 | 中文字幕在线播放一区二区 | 免费日韩电影 | 在线观看黄网站 | 成人一级片在线观看 | 国产精品一区二区在线观看免费 | 日韩欧美视频免费看 | 日韩久久久久久久 | 天天草综合 | 欧美午夜a | 日韩视频三区 | 在线欧美中文字幕 | 久九视频 | 欧美一区二区在线免费看 | 久久电影国产免费久久电影 | 激情综合婷婷 | 亚洲视频精品在线 | 亚洲精品乱码久久久久 | 久草在线免费在线观看 | 精品一区二区三区久久久 | 国产精成人品免费观看 | 91精品国自产在线 | 开心激情五月婷婷 | 午夜久久久久久久久久久 | 日本不卡视频 | 中文在线字幕免费观看 | 97超碰.com | 色婷婷av一区二 | 婷婷六月中文字幕 | 探花视频免费观看高清视频 | 波多野结衣理论片 | 久久久久亚洲精品成人网小说 | 精品免费视频123区 午夜久久成人 | 中文网丁香综合网 | 免费国产在线视频 | 精品免费一区二区三区 | 高清av中文在线字幕观看1 | 免费看一级一片 | 天天综合成人网 | 国产精品久久久久久久久久久久久久 | 久久精品国产一区二区三区 | 精品九九九| 国产一区二区三区在线免费观看 | 国产精久久 | 精品国产一二三 | 久久成人精品电影 | 激情伊人五月天久久综合 | 视频一区二区精品 | 丰满少妇对白在线偷拍 | 狠狠狠色狠狠色综合 | 国产精品精品久久久 | 中文字幕资源在线 | 黄色网在线免费观看 | 国产日韩欧美在线影视 | 国产美女精品人人做人人爽 | 超碰在线97国产 | 久久精品网站视频 | 午夜精品电影 | 在线观看成人小视频 | 在线观看免费av网站 | 免费看的黄色的网站 | 国产精品破处视频 | 国产色道 | 日韩在观看线 | 亚洲乱码久久 | 亚洲国产精品一区二区尤物区 | 中文字幕一区二区三区久久蜜桃 | 国产精品久久久久久久久久久久午夜片 | 日韩黄色在线观看 | 日韩69视频 | 91毛片在线 | 欧洲激情综合 | 激情av五月婷婷 | 天天草综合网 | www视频免费在线观看 | 免费a现在观看 | 亚洲黄色免费在线 | 成人a视频在线观看 | 在线 精品 国产 | 五月婷婷一级片 | 国产福利精品一区二区 | 国产精品视频永久免费播放 | 亚洲精品tv久久久久久久久久 | 又爽又黄又无遮挡网站动态图 | 婷婷性综合| 日韩在线视频不卡 | 在线观看一级 | 99久久99视频只有精品 | 久久人人精 | 九九热在线观看 | 亚洲一级在线观看 | 欧美在线观看视频 | 伊人视频 | 最新91在线视频 | 亚洲精品免费观看 | 国产精品久久久久久久午夜片 | 日韩毛片在线免费观看 | 国产成人精品一区一区一区 | 国产一级视屏 | www.狠狠插.com | www.久热 | 色在线亚洲 | 国产裸体bbb视频 | 欧美日韩大片在线观看 | 欧美一级电影免费观看 | 91在线免费看片 | 在线韩国电影免费观影完整版 | 日韩三区在线 | 精品视频不卡 | 一区二区三区在线免费观看视频 | 日韩免费福利 | 日韩免费网址 | 五月婷婷综合在线 | 精品国产乱码久久久久久久 | 国产午夜免费视频 | 国产精品日韩欧美一区二区 | 日本在线视频一区二区三区 | 亚洲精品中文字幕在线 | 99国产视频 | 不卡的av在线 | 波多野结衣视频一区二区 | 狠狠干综合网 | 超碰免费在线公开 | 国产精品乱码久久久 | 亚洲国内在线 | 一级片视频在线 | 在线观看岛国 | 久久草在线免费 | 欧美一级乱黄 | 亚洲男模gay裸体gay | 黄色毛片观看 | 在线播放 日韩专区 | 黄在线免费看 | av线上看 | 久久精品成人热国产成 | 玖玖视频免费在线 | 天堂av免费在线 | 韩国一区二区三区视频 | 国产精品福利小视频 | 91久久国产露脸精品国产闺蜜 | 日本在线观看中文字幕无线观看 | 色综合久久88色综合天天6 | 国产精品久久久久久久久久免费看 | 欧美日韩另类在线观看 | 亚洲一二三区精品 | 欧美一级黄色网 | 久久久精品免费看 | 欧美激情精品久久久久久免费 | 激情五月视频 | 91视频3p| 国产成人久久精品一区二区三区 | 蜜臀av性久久久久蜜臀av | 久久9999久久免费精品国产 | 国产精品久久久久久吹潮天美传媒 | 天天插天天操天天干 | 亚洲春色奇米影视 | av网站免费在线 | 欧美一级电影 | 日韩在线观看视频中文字幕 | 国产不卡精品 | 日韩av网页| 99在线视频观看 | 五月激情六月丁香 | 亚洲精品国偷自产在线99热 | 久久精品国产一区二区三区 | 国产亚洲精品久久久久秋 | 久久久久国产一区二区三区四区 | 国产精品福利视频 | 日韩专区在线观看 | 91久久偷偷做嫩草影院 | 伊人热| 亚洲理论视频 | 国产在线色 | 在线免费观看视频一区 | 91在线视频观看 | 国产成人资源 | 精品免费观看视频 | 97超碰中文字幕 | 欧美精品久久久久久久久免 | 欧美一级片在线观看视频 | 91福利试看 | 又黄又刺激视频 | 精品国产乱码 | 97视频免费看 | www.黄色| 成人黄色av网站 | 亚洲夜夜综合 | 欧美韩国日本在线 | 国产亚洲视频系列 | 中文字幕有码在线播放 | 成人一区二区三区在线 | 99精品欧美一区二区三区黑人哦 | 天天插天天操天天干 | 国产视频2| 亚洲精品中文字幕在线观看 | av在线免费播放 | 欧美另类交在线观看 | 99久久99久久精品国产片果冰 | 久久久高清一区二区三区 | 欧美精品在线免费 | 九九热精品视频在线播放 | 久久国产精品99精国产 | 香蕉视频在线免费 | 久久99久久99精品免视看婷婷 | 黄色小网站免费看 | 亚洲精品自拍 | 91精品爽啪蜜夜国产在线播放 | 久久久久久久免费 | 超碰97中文 | 狠狠操.com | 亚洲欧美国产视频 | 国产亚洲欧美一区 | 亚州av一区 | 人成在线免费视频 | 又黄又色又爽 | 亚洲精品字幕在线 | 欧美视频不卡 | 久草在线综合 | 久久超碰在线 | 国产午夜三级一区二区三桃花影视 | 六月丁香激情综合色啪小说 | 亚洲狠狠婷婷综合久久久 | 久久激情五月丁香伊人 | 亚洲欧洲日韩在线观看 | 91激情视频在线 | 精品久久久久一区二区国产 | 激情丁香 | 麻豆视频免费在线观看 | 国产精品一区在线 | 美女视频黄免费网站 | 成人av影视 | 99久久久久免费精品国产 | 日日夜夜添 | 中文字幕资源网 国产 | 91在线色 | 亚洲欧美日韩一区二区三区在线观看 | 99爱精品视频 | 国产网红在线观看 | 中文字幕av在线不卡 | 色欧美88888久久久久久影院 | 超碰在线成人 | 色视频 在线 | 97精品超碰一区二区三区 | 激情视频综合网 | 国产精品一区二区三区在线免费观看 | 日韩在线视频不卡 | 亚洲乱码中文字幕综合 | 91精选在线| 人人插人人做 | 97成人在线观看视频 | 日韩经典一区二区三区 | 18性欧美xxxⅹ性满足 | 91视频观看免费 | 最近高清中文字幕在线国语5 | 国产精品videossex国产高清 | 国产精品夜夜夜一区二区三区尤 | 国产手机在线精品 | 国产日韩欧美精品在线观看 | 网站在线观看日韩 | 欧美日韩亚洲第一 | 国产福利电影网址 | 天天干天天操天天入 | 亚洲精品国产综合久久 | 日韩欧美视频在线 | 蜜臀久久99精品久久久久久网站 | 91人人射 | 精品国产亚洲在线 | 九色porny真实丨国产18 | 中日韩欧美精彩视频 | 欧美激情在线网站 | 狠狠的日日 | 日韩精品免费一区二区在线观看 | 九九国产精品视频 | 亚洲人成人在线 | 成人app在线免费观看 | 97精品国产91久久久久久 | 久久久久激情 | 国产一区二区午夜 | 九九有精品 | 久久99视频免费 | 麻豆视频网址 | 国产精品一区二区三区免费视频 | 日韩在观看线 | 国产精品一区二区精品视频免费看 | 国产精品久久久电影 | 五月天婷亚洲天综合网精品偷 | 久久久香蕉视频 | 久久综合精品国产一区二区三区 | 国产黄免费在线观看 | 国产成人av | 久久久免费少妇 | 国产日韩欧美在线免费观看 | 亚洲一级性 | 超碰在线99 | 精品不卡av | 五月天视频网 | www免费在线观看 | 青青网视频 | 99r在线播放 | 久久久www成人免费毛片麻豆 | 又湿又紧又大又爽a视频国产 | 午夜 在线| 久久精品视频2 | 午夜黄色一级片 | 五月激情婷婷丁香 | 一区二区三区四区免费视频 | 黄色小说在线免费观看 | 亚洲a成人v | 中文字幕免费高清在线观看 | 黄污在线观看 | 免费的国产精品 | 欧美亚洲另类在线视频 | 久久免费高清 | av官网 | 96亚洲精品久久久蜜桃 | 又黄又爽又刺激 | 久久人人爽人人人人片 | 超碰在线人人 | 手机看片福利 | 婷婷婷国产在线视频 | 成人性生交视频 | 亚洲成人一区 | 久色小说| 在线观看日韩精品视频 | 成人影音在线 | 久久精品视 | 99久久99久久免费精品蜜臀 | 米奇四色影视 | 欧美日本一二三 | 久久久久久久免费看 | 日本激情动作片免费看 | 波多野结衣在线观看一区 | 国产在线视频一区二区 | 18久久久久久 | 久草在线资源免费 | 超碰在线免费福利 | 九九涩涩av台湾日本热热 | 丝袜美腿在线视频 | 永久免费在线 | 中文字幕国产精品一区二区 | 国产精品久久久久久久久久久久午夜片 | 人人玩人人弄 | av在线官网 | 欧美日高清视频 | 中文字幕一区二区三区四区 | 西西人体www444 | 亚洲精品国偷拍自产在线观看蜜桃 | www.黄色片.com| 五月综合色婷婷 | 久久私人影院 | 天天综合五月天 | 欧美特一级 | av片在线看 | 久久久精品高清 | 亚洲一区久久久 | 91成人在线视频 | 久久99爱视频 | 西西www444| 麻豆国产在线播放 | 亚洲国产精品999 | 天天干夜夜擦 | 国产在线不卡精品 | 日韩二区三区在线观看 | 手机在线观看国产精品 | av高清一区二区三区 | 四虎www | 国产精品女教师 | 日本色小说视频 | 精品uu| 亚洲高清免费在线 | 日韩欧美视频在线 | 天天躁日日躁狠狠躁av中文 | 久久午夜免费视频 | 中文字幕在线一区观看 | 欧美日韩国产一二三区 | 人人插人人搞 | 96av在线视频 | 美女视频一区二区 | 亚洲资源在线网 | 日韩在线第一区 | 国产精品久久久久久久久免费 | 国产视频午夜 | 亚洲精品视频网站在线观看 | 久久久久免费精品国产小说色大师 | 一区视频在线 | 狠狠狠色丁香婷婷综合久久88 | 99久久精品国 | 欧美 高跟鞋交 xxxxhd | 久久久www成人免费精品 | 麻豆精品视频在线 | 成年人视频在线观看免费 | 亚洲 中文 欧美 日韩vr 在线 | 2021国产视频| 五月激情丁香 | 久久你懂的 | 亚州精品天堂中文字幕 | 国产中年夫妇高潮精品视频 | 中文字幕黄网 | 国产男女爽爽爽免费视频 | 91污视频在线 | 国产99久久精品一区二区永久免费 | 国产99久久精品一区二区永久免费 | 亚洲精品中文在线 | 亚洲午夜精品一区二区三区电影院 | 97久久精品午夜一区二区 | 欧美性黑人 | 亚洲精品免费播放 | 成人免费观看完整版电影 | 99在线视频网站 | 97视频人人| 日韩性久久 | 91成人免费看片 | 国产精品久久久毛片 | 青青啪 | 婷婷色网址| 国产午夜精品一区二区三区嫩草 | 久草在在线| 日韩动漫免费观看高清完整版在线观看 | 人人射人人 | 国产一卡二卡四卡国 | 在线观看一级视频 | 日韩精品偷拍 | av资源免费看 | av黄免费看 | 一区二区欧美日韩 | 91看片在线免费观看 | 成人在线免费小视频 | 日本久久久久久科技有限公司 | 日本久久久久 | 亚洲精品黄色片 | 国产精品综合久久久久 | 国产精品久久久久aaaa九色 | 精品久久久久久亚洲综合网 | 色婷婷婷 | 国产福利久久 | 四虎国产精 | 成年人在线看片 | 在线国产黄色 | 一区二区三区高清 | 丁香视频| 中文字幕av在线播放 | 综合久久综合久久 | 色久av| 免费亚洲电影 | 国产高清免费视频 | 天天爽天天爽 | 久久久久久中文字幕 | 国产精品系列在线 | 久久久久久中文字幕 | 精品一区二区视频 | 国产一区二区观看 | 色99之美女主播在线视频 | 成人丝袜 | 人人射网站 | 91桃色免费观看 | 欧美 日韩 性 | 中日韩欧美精彩视频 | 欧美另类69 | 色综合五月| 美女网站在线 | 久久精品免费看 | 九九九九热精品免费视频点播观看 | 视频国产在线 | 在线精品视频在线观看高清 | 欧美久久99 | 夜夜操综合网 | 麻豆传媒在线视频 | 久久精品一区八戒影视 | 国产一区福利在线 | 久久久久草 | 毛片永久新网址首页 | 日日综合网 | 亚洲久久视频 | 韩国一区二区三区在线观看 | 亚洲资源| 日韩一级精品 | 免费精品视频 | 天天操网址 | 五月婷婷视频在线 | 色综合久久精品 | 天天射天天干天天操 | 久久综合桃花 | 在线观看不卡视频 | 99精品色 | 久久艹综合 | 国产精品福利无圣光在线一区 | 国产精品美女久久久久久久久 | 91视频中文字幕 | 97国产在线 | 久草国产在线 | 国产精品成人一区二区三区 | 成人h视频在线播放 | 公与妇乱理三级xxx 在线观看视频在线观看 | 欧美精品国产综合久久 | 91在线免费播放视频 | av解说在线 | 国产精品福利小视频 | 亚洲专区 国产精品 | 在线小视频你懂的 | 亚洲免费av在线播放 | 日韩精品中文字幕在线不卡尤物 | 国外成人在线视频网站 | 日韩有色 | 久热久草在线 | 午夜精品一二区 | 午夜电影av | 亚洲美女精品 | 国产日产精品久久久久快鸭 | 欧美一区二区三区在线 | 国产日产在线观看 | 五月天,com | 91av大全 | 国产免费一区二区三区最新 | 日韩网页 | 波多野结衣电影一区二区三区 | 狠狠干夜夜爱 | 日日成人网 | 久久视频99| 成人av在线影视 | 久久综合爱| 2023国产精品自产拍在线观看 | 91麻豆文化传媒在线观看 | 国产一级免费在线 | 在线观看小视频 | 日韩成人免费在线观看 | 国产午夜精品在线 | 亚洲小视频在线 | 美女视频黄网站 | 成人 国产 在线 | 综合久久五月天 | av888.com| 在线观看国产日韩 | 欧美日韩国产二区三区 | 国产成人精品一区二区三区网站观看 | 最近中文字幕完整视频高清1 | 婷婷色五 | 五月婷婷丁香六月 | 亚洲精品成人 | 日批视频在线 | 久久精品aaa | 国产福利在线不卡 | 亚洲国产日韩一区 | 日韩视频欧美视频 | 国产精品九九热 | 在线观看小视频 | 国产午夜精品一区二区三区 | 国产精品久久麻豆 | 天天操夜夜操夜夜操 | 一级欧美日韩 | 欧美日韩不卡一区二区三区 | 91免费的视频在线播放 | 黄色av一区二区三区 | 一区二区视频电影在线观看 | 日韩三级中文字幕 | 日本精品免费看 | 高清av免费看 | 国产一级二级在线播放 | 亚洲国产精品激情在线观看 | 日韩欧美区 | 欧美成人在线免费观看 | 精品久久九九 | 中文字幕在线播放一区 | 爱色婷婷 | 日韩成人欧美 | 美女黄濒 | 毛片在线播放网址 | 免费视频 你懂的 | 久久视频国产 | 婷婷综合国产 | 久久夜夜爽 | 亚洲成人资源网 | 99r在线播放| 超碰在线最新网址 | www国产在线| 99精品久久只有精品 | 五月婷婷丁香六月 | 中文字幕美女免费在线 | 久久久久一区二区三区 | 国产黄色精品在线 | 粉嫩一区二区三区粉嫩91 | 草莓视频在线观看免费观看 | 国产精品视频永久免费播放 | 国产精品久久久久久久久久东京 | 黄色在线网站噜噜噜 | 夜夜操综合网 | 欧美黄在线 | 在线视频福利 | 国产精品theporn | 日本最新中文字幕 | 91在线视频观看 | 久久国内精品视频 | 久久国产色| 久久久免费看 | 国产黄色在线看 | 69精品视频在线观看 | 99九九热只有国产精品 | 久久99国产精品自在自在app | 深爱激情五月婷婷 | 欧美日韩国产页 | 天天操夜夜操夜夜操 | 激情五月色播五月 | 国产三级久久久 | 国产黑丝袜在线 | 欧洲亚洲国产视频 | 九色激情网 | 一级片视频免费观看 | 久久久私人影院 | 激情欧美日韩一区二区 | 麻豆视频国产 | 亚洲综合精品视频 | 91中文字幕在线视频 | 婷婷免费视频 | 久久久久久国产精品美女 | 91精品视频在线免费观看 | 夜夜操狠狠干 | 久久精品www人人爽人人 | 亚洲视频免费在线观看 | 色94色欧美 | 国产小视频在线 | 日韩高清二区 | 丁香婷婷激情国产高清秒播 | 五月婷婷一区 | 国产夫妻性生活自拍 | 久久99国产精品久久99 | 日韩精品在线视频 | 精品国产一区二区三区久久久蜜月 | 狠狠色丁香婷婷综合基地 | 激情婷婷丁香 | 综合网在线视频 | 91精品久久久久久久久久久久久 | 韩国av免费在线 | 亚洲经典精品 | 日韩大片在线看 | 不卡av电影在线 | 在线a人v观看视频 | 操操日日 | 黄av免费| 一区二区三区免费网站 | 中文字幕精品一区久久久久 | 黄色免费视频在线观看 | 欧美一级大片在线观看 | 毛片网站观看 | 九九激情视频 | 成av在线 | 亚洲精品综合在线 | 91香蕉视频 | 国产精品成人自拍 | 91在线国产观看 | 国产亚洲一级高清 | 亚洲麻豆精品 | 日韩视频免费观看高清 | 国产97免费 | 亚洲免费色 | 欧美色伊人 | 伊人国产视频 | 69中文字幕 | 综合久久婷婷 | 久久精品中文字幕 | av电影亚洲 | 天天干天天想 | 久久久久国产精品一区二区 | 国产91精品高清一区二区三区 | 日韩电影在线观看一区二区 | 天天综合入口 | 色姑娘综合网 | www.国产精品 | 久久欧洲视频 | 精品在线播放 | 成人中文字幕在线 | 国产免费国产 | 在线观看中文字幕av | 六月丁香在线视频 | 国产精品久久久久久久电影 | 亚洲日b视频 | 亚洲三级黄色 | 狠狠狠综合 | 日韩欧在线 | 久草在线视频中文 | 国产精品18久久久久久久久久久久 | 成 人 免费 黄 色 视频 | 久久免费视频一区 | 一区二区三区av在线 | 亚洲成人精品av | 久久久久伊人 | 麻豆一级视频 | 精品自拍网 | 日本韩国精品一区二区在线观看 | 草久久精品 | 欧美最爽乱淫视频播放 | 久久毛片高清国产 | av黄色免费网站 | 又色又爽又黄高潮的免费视频 | 久久av高清 | 狠狠狠狠狠狠狠狠干 | 欧美天堂视频在线 | 久久久久国产精品免费 | 国产视频中文字幕 | 黄色三级免费片 | 在线看一级片 | 国产99色 | 国产中的精品av小宝探花 | 精品久久一区二区 | 精品一区二区6 | 日韩中文字幕视频在线观看 | 99视频精品在线 | 国产手机在线观看 | 不卡av在线 | 国内精品久久影院 | 国产成人精品一区二区 | 精品av在线播放 | 在线激情电影 | 香蕉影院在线播放 | 天天干夜夜夜 | 欧美日韩在线观看视频 | 狠狠操夜夜 | 一级a毛片高清视频 | 激情九九| 国产精品久久久久久五月尺 | 夜夜爽天天爽 | 国产不卡视频在线播放 | 午夜视频在线网站 | 欧美久久久久久久久久久 | 亚洲自拍偷拍色图 | 99av在线视频 | 综合色中色 | 97av.com | 免费电影一区二区三区 | 91久久人澡人人添人人爽欧美 | 三级免费黄 | www夜夜 | 黄色网在线免费观看 | 天堂网一区二区 | 国产不卡在线观看 | 午夜精品一区二区三区在线 | 日韩色av色资源 | 日韩va在线观看 | 久久开心激情 | 五月激情久久 | 成年人三级网站 | 久久天堂影院 | 激情综合网五月激情 | 少妇高潮流白浆在线观看 | 亚洲情影院 | 精品欧美一区二区三区久久久 | 免费福利片2019潦草影视午夜 | 久久免费美女视频 | 欧美日韩一区二区三区免费视频 | 国产超碰在线观看 | 毛片网站免费 | 爱爱av在线| 91激情| 午夜视频在线观看一区二区三区 | 国产不卡网站 | 天天鲁天天干天天射 | 亚洲国产精品久久 | 日本丰满少妇免费一区 | 亚洲少妇自拍 | 黄色小视频在线观看免费 | 人人插人人费 | 日韩一区二区免费视频 | 99久久精品久久久久久动态片 | 毛片网在线播放 | 天天做日日爱夜夜爽 | 国产一区二区高清 | 午夜久久影视 | 久久热首页| 五月天com | 久久久久综合精品福利啪啪 | 日韩av一卡二卡三卡 | 黄色中文字幕 | 中字幕视频在线永久在线观看免费 | 中文字幕韩在线第一页 | 色综合久久99| av一二三区 | 免费中文字幕 | 欧美性春潮 | 中文字幕日韩电影 | 成人在线播放网站 | 日本韩国中文字幕 |