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

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

?? menubar.cpp

?? VC開發(fā)實用實例
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
// MenuBar.cpp : implementation file
// CMenuBar version 2.12

//類名:CMenuBar
//功能:使菜單顯示為Office2000風格
//修改人:徐景周(jingzhou_xu@163.net)
//組織:未來工作室(Future Studio)
//日期:2001.12.1
#include "stdafx.h"
#include "..\resource.h"  //上一級目錄中
#include "MenuBar.h"
#include "DocTplEx.h"
#include "MDIFrmEx.h"
#include "SubClass.h"
#include <afxole.h>
#include "WinAppEx.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#ifdef _DEBUG
	const BOOL bTraceOn = FALSE;
	#define LTRACE if (bTraceOn) TRACE
	const BOOL bTraceOn2 = TRUE;
	#define LTRACE2 if (bTraceOn2) TRACE
#else
	#define LTRACE
	#define LTRACE2
#endif

//////////////////////////////////////////////////////////////////////
// I've found string resource of "More windows" in "user.exe".
// But I can't load it, so please replace a following with your language.
static const TCHAR _szMoreWindows[] = _T("&More windows...");

//////////////////////////////////////////////////////////////////////
// used for OLE menu (easy fix)
static BOOL _bWindowMenuSendCmd = FALSE;
static int _nPrevIndexForCmd = -1;

//////////////////////////////////////////////////////////////////////
// hook
static CMenuBar* g_pMenuBar = NULL;
static HHOOK	 g_hMsgHook = NULL;

// message
const UINT CMenuBar::WM_GETMENU = ::RegisterWindowMessage(_T("CMenuBar::WM_GETMENU"));
const UINT MB_SET_MENU_NULL = ::RegisterWindowMessage(_T("CMenuBar::MB_SET_MENU_NULL"));

const int cxBorder2 = ::GetSystemMetrics(SM_CXBORDER)*2;
const int cyBorder2 = ::GetSystemMetrics(SM_CYBORDER)*2;

// common resources
static CFont _fontHorzMenu, _fontVertMenu;
static int _cyHorzFont, _cyMenuOnBar, _cyTextMargin;
const int CXTEXTMARGIN = 5;

static BOOL _InitCommonResources(BOOL bForce = FALSE)
{
	if (bForce == FALSE && _fontHorzMenu.m_hObject != NULL)
		return TRUE;// no need to reinitialize

	// clean up
	_fontHorzMenu.DeleteObject();
	_fontVertMenu.DeleteObject();

	// create fonts
	NONCLIENTMETRICS info; info.cbSize = sizeof(info);
	::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0);
	if (!_fontHorzMenu.CreateFontIndirect(&info.lfMenuFont))
		return FALSE;

	// create vertical font
	info.lfMenuFont.lfEscapement = -900;
	info.lfMenuFont.lfOrientation = -900;
	if (!_fontVertMenu.CreateFontIndirect(&info.lfMenuFont))
		return FALSE;

	// get font height
	_cyHorzFont = abs(info.lfMenuFont.lfHeight);

	// calc Y text margin
	_cyMenuOnBar = info.iMenuHeight;
	_cyMenuOnBar = max(_cyMenuOnBar, ::GetSystemMetrics(SM_CYSMICON));
	_cyTextMargin = (_cyMenuOnBar - _cyHorzFont) / 2;

	return TRUE;
}

// I wanted to control popup point, but I've fount we can never get popupmenu rect before popup.
// even if not owner draw menu...
static CPoint _ComputeMenuTrackPoint(const CRect& rcItem, DWORD dwStyle, UINT& fuFlags, TPMPARAMS& tpm)
{
	fuFlags = TPM_LEFTBUTTON | TPM_LEFTALIGN | TPM_HORIZONTAL;
	tpm.cbSize = sizeof(tpm);
	CPoint pt;
	CRect& rcExclude = (CRect&)tpm.rcExclude;
	CWnd::GetDesktopWindow()->GetWindowRect(&rcExclude);

	CRect rcFrame;
	AfxGetMainWnd()->GetWindowRect(&rcFrame);

	switch (dwStyle & CBRS_ALIGN_ANY) {
	case CBRS_ALIGN_RIGHT:
	case CBRS_ALIGN_LEFT:
		pt = CPoint(rcItem.right+1, rcItem.top-1);
		// to avoid strange menu flip, won't do : [rcExclude.right = rcItem.right+1;]
		// I want to use : fuFlags |= TPM_HORNEGANIMATION;
		break;

	default: //	case CBRS_ALIGN_TOP:
		pt = CPoint(rcItem.left-1, rcItem.bottom);
		rcExclude.bottom = rcItem.bottom+1;// <- insead of [fuFlags |= TPM_VERPOSANIMATION;]

		break;
	}
	return pt;
}

static int _CalcTextWidth(const CString& strText)
{
	CWindowDC dc(NULL);
	CRect rcText(0, 0, 0, 0);
	CFont* pOldFont = dc.SelectObject(&_fontHorzMenu);
	dc.DrawText(strText, &rcText, DT_SINGLELINE | DT_CALCRECT);
	dc.SelectObject(pOldFont);

	return rcText.Width();
}

// grippers pasted from MFC6
#define CX_GRIPPER  3
#define CY_GRIPPER  3
#define CX_BORDER_GRIPPER 2
#define CY_BORDER_GRIPPER 2
#define CX_GRIPPER_ALL CX_GRIPPER + CX_BORDER_GRIPPER*2
#define CY_GRIPPER_ALL CY_GRIPPER + CY_BORDER_GRIPPER*2

/////////////////////////////////////////////////////////////////////////////
// CMenuBar
BEGIN_MESSAGE_MAP(CMenuBar, CControlBar)
	//{{AFX_MSG_MAP(CMenuBar)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_CREATE()
	ON_WM_LBUTTONUP()
	ON_WM_TIMER()
	ON_WM_DESTROY()
	ON_WM_NCCALCSIZE()
	ON_WM_NCPAINT()
	ON_WM_NCHITTEST()
	ON_WM_WINDOWPOSCHANGED()
	//}}AFX_MSG_MAP
	ON_REGISTERED_MESSAGE(MB_SET_MENU_NULL, OnSetMenuNull)
END_MESSAGE_MAP()

IMPLEMENT_DYNAMIC(CMenuBar, CControlBar)

/////////////////////////////////////////////////////////////////////////////
// CMenuBar Construction
CMenuBar::CMenuBar()
{
	m_bMode=TRUE;
	m_nDirectionKey=0;
	m_arrDepth=0;
	m_bLoadedFromResource=FALSE;
	m_bUpdating=FALSE;
	m_bNoTimer=FALSE;
	m_bEnableChange=TRUE;
	m_nCurIndex  = -1;
	m_nTrackingState = none;
	m_bProcessRightArrow = m_bProcessLeftArrow = TRUE;
	m_bIgnoreAlt = FALSE;
	m_nIDEvent = NULL;
	m_pMenu=NULL;
	m_pWindowMenu=NULL;
	m_pMainWndHook=NULL;

	m_bMDIMaximized = FALSE;
	m_hWndMDIClient = NULL;
	m_hWndActiveChild = NULL;

	m_pMenuIcon = NULL;
	m_pMenuControl = NULL;

	m_bDelayedButtonLayout = TRUE;
	m_dwExStyle = 0;

	m_bFrameActive = FALSE;
	m_bMDIApp = FALSE;
	m_nTotUse=0x8000;
	m_nMenuCmd=1;
}

BOOL CMenuBar::Create(CWnd* pParentWnd, DWORD dwStyle, UINT nID)
{
	return CreateEx(pParentWnd, dwStyle,
		CRect(m_cxLeftBorder, m_cyTopBorder, m_cxRightBorder, m_cyBottomBorder), nID);
}

BOOL CMenuBar::CreateEx(CWnd* pParentWnd, DWORD dwStyle, CRect rcBorders, UINT nID)
{
	ASSERT_VALID(pParentWnd);// must have a parent
	ASSERT (!((dwStyle & CBRS_SIZE_FIXED) && (dwStyle & CBRS_SIZE_DYNAMIC)));

	SetBorders(rcBorders);

	// save the original style
	m_dwExStyle = dwStyle;

	// save the style
	m_dwStyle = (dwStyle & CBRS_ALL);// ******fixed by Mark Gentry, thanx!******
	
	dwStyle &= ~CBRS_ALL;

	CString strClass = AfxRegisterWndClass(
		CS_HREDRAW | CS_VREDRAW |
		CS_DBLCLKS,// don't forget!
		AfxGetApp()->LoadStandardCursor(IDC_ARROW),
		(HBRUSH)(COLOR_BTNFACE+1));

	m_pParent=pParentWnd;
	if(!m_pParent) m_pParent=AfxGetMainWnd();

	return CWnd::Create(strClass, _T("MenuBar"), dwStyle, CRect(), pParentWnd, nID);
}

int CMenuBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CControlBar::OnCreate(lpCreateStruct) == -1)
		return -1;

	CWnd* pFrame = GetOwner();
	ASSERT_VALID(pFrame);

	// hook frame window to trap WM_MENUSELECT
/*
	m_pMainWndHook=m_hookFrame.GetMainWndHook();
	if(m_pMainWndHook)m_pMainWndHook->HookWindow((HWND)NULL);
*/
	m_hookFrame.Install(this, pFrame->GetSafeHwnd());

	// If this is an MDI app, hook client window to trap WM_MDISETMENU
	if (pFrame->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd))) {
		m_bMDIApp = TRUE;
		m_hWndMDIClient = ((CMDIFrameWnd*)pFrame)->m_hWndMDIClient;
		ASSERT(::IsWindow(m_hWndMDIClient));
		m_hookMDIClient.Install(this, m_hWndMDIClient);
	}

	if (!_InitCommonResources()) {
		TRACE(_T("Failed to create menubar resource\n"));
		return FALSE;
	}	

	return 0;
}

BOOL CMenuBar::InitItems()
{
	ASSERT(m_pMenu);

	// clean up all items
	DeleteItems();

	// buttons
	for (int i = 0; i < (signed) m_pMenu->GetMenuItemCount(); ++i) {
		m_arrItem.Add(new CMenuButton(m_pMenu, i));
	}

	if (m_bMDIApp) {
		// icon
		m_pMenuIcon = new CMenuIcon(this);
		m_arrItem.InsertAt(0, m_pMenuIcon);
		// frame control
		m_pMenuControl = new CMenuControl(this);
		m_arrItem.Add(m_pMenuControl);

		// reinitializing
		m_pMenuIcon->OnActivateChildWnd();
		m_pMenuControl->OnActivateChildWnd();
	}

	return TRUE;
}

BOOL CMenuBar::LoadMenuBar(UINT nIDResource)
{
	ASSERT(m_pMenu == NULL);

	ASSERT_VALID(m_pDockSite);
	if (m_pDockSite->GetMenu()) {
		PostMessage(MB_SET_MENU_NULL, (WPARAM)m_pDockSite->GetSafeHwnd());
	}
	
	m_pMenu = new CMenuEx();
	m_arrDepth=0;
	m_arrSel.SetSize(1);
	m_arrNSel.SetSize(1);
	m_arrSel[0]=m_pMenu;
	m_arrNSel[0]=0;
	if (m_pMenu == NULL) {
		TRACE(_T("Failed to load menu\n"));
		return FALSE;
	}
	m_bLoadedFromResource=TRUE;
	if (!m_pMenu->LoadMenu(MAKEINTRESOURCE(nIDResource))) {
		TRACE(_T("Failed to load menu\n"));
		return FALSE;
	}

	ResetMenuUsages(m_pMenu);
	UpdateMenuRefresh();

	return InitItems();
}

CMenuEx* CMenuBar::LoadMenu(CMenuEx* pMenu, CMenuEx* pWindowMenu)
{
	ASSERT_VALID(this);
	
	CFrameWnd* pFrame = CControlBar::GetParentFrame();
	if (pFrame && pFrame->GetMenu() != NULL) {
		// not to make MFC ignore SetMenu(NULL), post it.
		PostMessage(MB_SET_MENU_NULL, (WPARAM)pFrame->GetSafeHwnd());
	}

	CMenuEx* pOldMenu = m_pMenu;
	m_pMenu = pMenu;// menu is shared with MFC
	m_arrDepth=0;
	m_arrSel.SetSize(1);
	m_arrSel[0]=m_pMenu;
	m_arrNSel.SetSize(1);
	m_arrNSel[0]=0;

	// initialize Items 
	VERIFY(InitItems());

	if (pMenu) {
		m_pWindowMenu = pWindowMenu;
		RefreshBar();// and menubar itself
	}

	if(m_bLoadedFromResource) 
	{
		pOldMenu->DestroyMenu();
		delete pOldMenu;
		pOldMenu=NULL;
		m_bLoadedFromResource=FALSE;
	}
	UpdateMenuRefresh();

	return pOldMenu;
}

void CMenuBar::RefreshBar(BOOL bReposition)
{
	InvalidateRect(NULL);

#if _MFC_VER >= 0x600
		if (GetParent()->IsKindOf(RUNTIME_CLASS(CReBar))) {
			m_bDelayedButtonLayout = TRUE;// to avoid ASSERTION
			Layout();
		}
#endif

	if(bReposition)
	{
	CFrameWnd* pFrame = (CFrameWnd*)GetTopLevelFrame();
	ASSERT_VALID(pFrame); ASSERT(pFrame->IsFrameWnd());
	pFrame->RecalcLayout();

	// floating frame
	CFrameWnd* pMiniFrame = CControlBar::GetParentFrame();
	if (pMiniFrame->IsKindOf(RUNTIME_CLASS(CMiniFrameWnd)))
		pMiniFrame->RecalcLayout();
	
	CWnd* pWnd=GetParent();
	if (pWnd->IsKindOf(RUNTIME_CLASS(CDockBar))) pWnd=pWnd->GetParent();
	if (!pWnd->IsKindOf(RUNTIME_CLASS(CFrameWnd))) 
		pWnd->RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST);
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMenuBar clean up 
CMenuBar::~CMenuBar()
{
	if(m_pMainWndHook) m_pMainWndHook->HookWindow(AfxGetMainWnd());
}

void CMenuBar::DeleteItems()
{
	for(int i = 0; i < m_arrItem.GetSize(); ++i) {
		CMenuItem* pItem = m_arrItem[i];
		delete pItem;
	}

	m_arrItem.RemoveAll();

	m_pMenuIcon = NULL;
	m_pMenuControl = NULL;
}

/////////////////////////////////////////////////////////////////////////////
// CMenuBar draw
void CMenuBar::DoPaint(CDC* pDC)
{
//	if (m_bDelayedButtonLayout)
//		Layout();

	//LTRACE(_T("CMenuBar::DoPaint\n"));
	CRect rect;	GetClientRect(rect);

	// draw items
	for (int i = 0; i < m_arrItem.GetSize(); ++i) {
		m_arrItem[i]->Update(pDC);
	}

	// delay draw captions 
	if (m_pMenuControl) {
		if (IsFloating()) {
			m_pMenuControl->DelayLayoutAndDraw(pDC, rect.Size());
		}
		else {
			if (m_dwStyle & CBRS_ORIENT_HORZ)
				m_pMenuControl->DelayLayoutAndDraw(pDC, CSize(GetClipBoxLength(TRUE), rect.Height()));
			else
				m_pMenuControl->DelayLayoutAndDraw(pDC, CSize(rect.Width(), GetClipBoxLength(FALSE)));
		}
	}
}

void CMenuBar::UpdateBar(TrackingState nState, int nNewIndex)
{
	if (m_nTrackingState == buttonmouse)	
		m_bIgnoreAlt = FALSE;// if prev state is BUTTONMOUSE, always should be FALSE!

	m_nTrackingState = nState;

#ifdef _DEBUG
//	static LPCTSTR lpszStates[] = { _T("NONE"), _T("BUTTON"), _T("POPUP"), _T("BUTTONMOUSE") };
//	LTRACE(_T("CMenuBar::UpdateBar state to %s, button=%d\n"),
//		lpszStates[nState], nNewIndex);
#endif
	/*static LPCTSTR lpszStates[] = { _T("NONE"), _T("BUTTON"), _T("POPUP"), _T("BUTTONMOUSE") };
	TRACE(_T("CMenuBar::UpdateBar state to %s, button=%d\n"),
		lpszStates[nState], nNewIndex);*/

	// clean up
	if (IsValidIndex(m_nCurIndex)) {
		CMenuItem* pItem = m_arrItem[m_nCurIndex];
		CClientDC dc(this);
		pItem->ModifyState(MISTATE_HOT | MISTATE_PRESSED, 0);
		pItem->Update(&dc);

		// draw captions forcefully
		if (m_pMenuControl) {
			CRect rcCross = m_pMenuControl->GetRect() & m_arrItem[m_nCurIndex]->GetRect();
			if (!rcCross.IsRectEmpty()) {
				m_pMenuControl->ForceDrawControl(&dc);
			}
		}

		m_nCurIndex = -1;
	}

	if (nState != none) {
		ASSERT(IsValidIndex(nNewIndex));
		m_nCurIndex = nNewIndex;
		m_nLastIndex = nNewIndex;
		CMenuItem* pItem = m_arrItem[m_nCurIndex];
		CClientDC dc(this);

		if (nState == button || nState == buttonmouse) {
			pItem->ModifyState(MISTATE_PRESSED, MISTATE_HOT);
			pItem->Update(&dc);
		}
		else if (nState == popup) {
			pItem->ModifyState(MISTATE_HOT, MISTATE_PRESSED);
			pItem->Update(&dc);
		}

		// draw captions forcefully
		if (m_pMenuControl) {
			CRect rcCross = m_pMenuControl->GetRect() & m_arrItem[m_nCurIndex]->GetRect();
			if (!rcCross.IsRectEmpty()) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩另类一区| 中文字幕中文乱码欧美一区二区| 久久久www成人免费无遮挡大片| 日韩一区欧美小说| 精品一区二区免费在线观看| 一本色道久久综合狠狠躁的推荐| 日韩一区二区免费高清| 樱花影视一区二区| 国产精品综合二区| 欧美日韩国产小视频在线观看| 中文天堂在线一区| 精品午夜一区二区三区在线观看| 欧美在线观看18| ●精品国产综合乱码久久久久| 毛片基地黄久久久久久天堂| 欧美少妇xxx| 中文字幕在线不卡国产视频| 国产精品亚洲午夜一区二区三区 | 国产一区二区三区四| 在线观看一区二区精品视频| 国产精品嫩草影院com| 精品午夜久久福利影院| 欧美丰满一区二区免费视频| 尤物在线观看一区| 色综合久久六月婷婷中文字幕| 国产女人18毛片水真多成人如厕| 另类综合日韩欧美亚洲| 欧美一区二区三区日韩| 午夜影院在线观看欧美| 欧美手机在线视频| 亚洲一区二区精品久久av| 色视频一区二区| 亚洲伦理在线精品| 色噜噜狠狠色综合欧洲selulu| 中文字幕永久在线不卡| 99免费精品视频| 中文字幕免费不卡| 94-欧美-setu| 亚洲激情网站免费观看| 色视频一区二区| 性感美女极品91精品| 欧美日韩大陆一区二区| 午夜av一区二区三区| 91精品在线免费| 久久丁香综合五月国产三级网站| 日韩欧美成人激情| 国产麻豆91精品| 中日韩免费视频中文字幕| 色婷婷久久久久swag精品| 亚洲综合成人网| 欧美一区二区三区在| 国内成人精品2018免费看| 久久久国际精品| 色综合咪咪久久| 亚洲成av人片在线| 日韩午夜av电影| 粉嫩av一区二区三区| 亚洲精品日日夜夜| 4438x亚洲最大成人网| 国产一区三区三区| 亚洲天堂网中文字| 69久久夜色精品国产69蝌蚪网| 激情小说欧美图片| 亚洲欧美日韩在线播放| 欧美高清视频不卡网| 国产一区二区三区高清播放| 亚洲欧美日韩精品久久久久| 91精品国产一区二区| 国产91精品一区二区麻豆网站| 樱花影视一区二区| 久久婷婷一区二区三区| 91丨porny丨户外露出| 日本不卡一区二区三区高清视频| 久久久99久久精品欧美| 欧美性大战久久久久久久蜜臀| 精品一区二区综合| 一区二区高清免费观看影视大全| 欧美成人女星排行榜| 91色.com| 国产成人午夜精品5599| 丝袜美腿亚洲色图| 亚洲色图一区二区三区| 2024国产精品视频| 欧美区视频在线观看| 国产91精品免费| 日韩中文字幕区一区有砖一区| 欧美激情一区二区三区全黄| 91精品欧美福利在线观看| 本田岬高潮一区二区三区| 久久se这里有精品| 亚洲国产精品久久人人爱蜜臀| 中文字幕精品一区二区三区精品 | 亚洲一区成人在线| 亚洲国产精品成人综合| 日韩一区二区三区视频| 91成人免费在线视频| jlzzjlzz亚洲日本少妇| 极品少妇一区二区| 日韩精品电影一区亚洲| 亚洲最色的网站| 国产精品传媒入口麻豆| 久久久噜噜噜久噜久久综合| 制服丝袜亚洲色图| 欧美日韩亚洲综合一区二区三区| 本田岬高潮一区二区三区| 国产成人av影院| 国产专区欧美精品| 麻豆国产精品一区二区三区| 三级在线观看一区二区| 亚洲一区二区高清| 亚洲成人av一区二区| 亚洲精品美腿丝袜| 亚洲精品视频一区二区| 亚洲精品免费播放| 亚洲高清免费观看| 亚洲午夜精品一区二区三区他趣| 亚洲欧美视频在线观看视频| 亚洲人成影院在线观看| 亚洲女人****多毛耸耸8| 一区二区中文视频| 亚洲精品日韩综合观看成人91| 亚洲情趣在线观看| 亚洲成人激情综合网| 日韩精品一卡二卡三卡四卡无卡| 亚洲bdsm女犯bdsm网站| 日韩在线a电影| 麻豆精品一区二区三区| 国产一区999| 大尺度一区二区| 91免费视频网| 欧美老肥妇做.爰bbww视频| 在线播放/欧美激情| 精品日韩一区二区三区| 久久精品一区蜜桃臀影院| 国产精品久久久久四虎| 亚洲精品视频在线观看免费| 亚洲成人免费视| 另类欧美日韩国产在线| 国产精品123| 色综合天天综合网国产成人综合天 | 国产精品你懂的在线| 亚洲欧美电影院| 午夜精品成人在线| 激情久久五月天| av在线这里只有精品| 欧美在线小视频| 日韩精品在线看片z| 国产精品热久久久久夜色精品三区| 亚洲色图视频网| 美女网站色91| 99久久精品国产一区二区三区 | 国产成人精品一区二| 91丨porny丨蝌蚪视频| 欧美一激情一区二区三区| 国产免费观看久久| 婷婷开心久久网| 成人小视频在线观看| 欧美精品亚洲一区二区在线播放| 久久奇米777| 天天影视色香欲综合网老头| 国产精品综合二区| 欧美老年两性高潮| 国产精品久久看| 麻豆免费看一区二区三区| 成人国产一区二区三区精品| 这里只有精品视频在线观看| 中文字幕免费在线观看视频一区| 日韩成人一级大片| 91在线高清观看| 精品国产91九色蝌蚪| 亚洲一区二区在线观看视频| 国产成人精品三级| 日韩欧美亚洲国产精品字幕久久久 | 日韩午夜精品电影| 一区二区三区不卡在线观看| 国产v综合v亚洲欧| 日韩久久精品一区| 亚洲午夜羞羞片| 波多野结衣中文字幕一区| 精品久久国产老人久久综合| 亚洲国产日韩一级| 色综合色综合色综合| 国产精品美女久久久久久久久| 久久精品国产一区二区三区免费看| 91国偷自产一区二区三区成为亚洲经典 | 色菇凉天天综合网| 中文字幕精品一区二区三区精品 | 精品国产免费一区二区三区香蕉| 亚洲综合丁香婷婷六月香| 91在线视频在线| 亚洲日本电影在线| www.激情成人| 中国av一区二区三区| 成人激情小说乱人伦| 国产亚洲va综合人人澡精品 | 久久亚洲综合色一区二区三区| 五月激情丁香一区二区三区| 欧美性受xxxx黑人xyx| 亚洲一区二区高清| 欧美男男青年gay1069videost|