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

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

?? listctrlex.cpp

?? Interactive SQL Tool
?? CPP
字號:
// ListCtrlEx.cpp : implementation of the CListCtrlEx class

#include "stdafx.h"
#include "ListCtrlEx.h"

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

/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx

IMPLEMENT_DYNCREATE(CListCtrlEx, CListCtrl)

BEGIN_MESSAGE_MAP(CListCtrlEx, CListCtrl)
	//{{AFX_MSG_MAP(CListCtrlEx)
	ON_WM_SIZE()
	ON_WM_PAINT()
	ON_WM_SETFOCUS()
	ON_WM_KILLFOCUS()
	//}}AFX_MSG_MAP
	ON_MESSAGE(LVM_SETIMAGELIST, OnSetImageList)
	ON_MESSAGE(LVM_SETTEXTCOLOR, OnSetTextColor)
	ON_MESSAGE(LVM_SETTEXTBKCOLOR, OnSetTextBkColor)
	ON_MESSAGE(LVM_SETBKCOLOR, OnSetBkColor)
	ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
	ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx construction/destruction

CListCtrlEx::CListCtrlEx()
{
	m_bFullRowSel=FALSE;
	m_bClientWidthSel=TRUE;

	m_cxClient=0;
	m_cxStateImageOffset=0;

	m_clrText=::GetSysColor(COLOR_WINDOWTEXT);
	m_clrTextBk=::GetSysColor(COLOR_WINDOW);
	m_clrBkgnd=::GetSysColor(COLOR_WINDOW);
}

CListCtrlEx::~CListCtrlEx()
{
}

BOOL CListCtrlEx::PreCreateWindow(CREATESTRUCT& cs)
{
	// default is report view and full row selection
	cs.style &= ~LVS_TYPEMASK;
	cs.style |= LVS_REPORT | LVS_OWNERDRAWFIXED;
	
	m_bFullRowSel=TRUE;

	return(CListCtrl::PreCreateWindow(cs));
}

BOOL CListCtrlEx::SetFullRowSel(BOOL bFullRowSel)
{
	// no painting during change
	LockWindowUpdate();

	m_bFullRowSel=bFullRowSel;

	BOOL bRet;

	if(m_bFullRowSel)
		bRet=ModifyStyle(0L,LVS_OWNERDRAWFIXED);
	else
		bRet=ModifyStyle(LVS_OWNERDRAWFIXED,0L);

	// repaint window if we are not changing view type
	if(bRet && (GetStyle() & LVS_TYPEMASK)==LVS_REPORT)
		Invalidate();

	// repaint changes
	UnlockWindowUpdate();

	return(bRet);
}

BOOL CListCtrlEx::GetFullRowSel()
{
	return(m_bFullRowSel);
}

/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx drawing

// offsets for first and other columns
#define OFFSET_FIRST	2
#define OFFSET_OTHER	6

void CListCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
	CRect rcItem(lpDrawItemStruct->rcItem);
	UINT uiFlags=ILD_TRANSPARENT;
	CImageList* pImageList;
	int nItem=lpDrawItemStruct->itemID;
	BOOL bFocus=(GetFocus()==this);
	COLORREF clrTextSave, clrBkSave;
	COLORREF clrImage=m_clrBkgnd;
	static _TCHAR szBuff[MAX_PATH];
	LPCTSTR pszText;

// get item data

	LV_ITEM lvi;
	lvi.mask=LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
	lvi.iItem=nItem;
	lvi.iSubItem=0;
	lvi.pszText=szBuff;
	lvi.cchTextMax=sizeof(szBuff);
	lvi.stateMask=0xFFFF;		// get all state flags
	GetItem(&lvi);

	BOOL bSelected=(bFocus || (GetStyle() /*& LVS_SHOWSELALWAYS*/)) && lvi.state & LVIS_SELECTED;
	bSelected=bSelected || (lvi.state & LVIS_DROPHILITED);

// set colors if item is selected

	CRect rcAllLabels;
	GetItemRect(nItem,rcAllLabels,LVIR_BOUNDS);
	CRect rcLabel;
	GetItemRect(nItem,rcLabel,LVIR_LABEL);
	rcAllLabels.left=rcLabel.left;
	if(m_bClientWidthSel && rcAllLabels.right<m_cxClient)
		rcAllLabels.right=m_cxClient;

	if(bSelected)
	{
		clrTextSave=pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
		clrBkSave=pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));

		pDC->FillRect(rcAllLabels,&CBrush(::GetSysColor(COLOR_HIGHLIGHT)));
	}
	else
		pDC->FillRect(rcAllLabels,&CBrush(m_clrTextBk));

// set color and mask for the icon

	if(lvi.state & LVIS_CUT)
	{
		clrImage=m_clrBkgnd;
		uiFlags|=ILD_BLEND50;
	}
	else if(bSelected)
	{
		clrImage=::GetSysColor(COLOR_HIGHLIGHT);
		uiFlags|=ILD_BLEND50;
	}

// draw state icon

	UINT nStateImageMask=lvi.state & LVIS_STATEIMAGEMASK;
	if(nStateImageMask)
	{
		int nImage=(nStateImageMask>>12)-1;
		pImageList=GetImageList(LVSIL_STATE);
		if(pImageList)
			pImageList->Draw(pDC,nImage,CPoint(rcItem.left,rcItem.top),ILD_TRANSPARENT);
	}

// draw normal and overlay icon

	CRect rcIcon;
	GetItemRect(nItem,rcIcon,LVIR_ICON);

	pImageList=GetImageList(LVSIL_SMALL);
	if(pImageList)
	{
		UINT nOvlImageMask=lvi.state & LVIS_OVERLAYMASK;
		if(rcItem.left<rcItem.right-1)
			ImageList_DrawEx(pImageList->m_hImageList,lvi.iImage,pDC->m_hDC,rcIcon.left,rcIcon.top,16,16,m_clrBkgnd,clrImage,uiFlags | nOvlImageMask);
	}

// draw item label

	GetItemRect(nItem,rcItem,LVIR_LABEL);
	rcItem.right-=m_cxStateImageOffset;

	pszText=MakeShortString(pDC,szBuff,rcItem.right-rcItem.left,2*OFFSET_FIRST);

	rcLabel=rcItem;
	rcLabel.left+=OFFSET_FIRST;
	rcLabel.right-=OFFSET_FIRST;

	pDC->DrawText(pszText,-1,rcLabel,DT_LEFT | DT_SINGLELINE | DT_NOPREFIX | DT_NOCLIP | DT_VCENTER);

// draw labels for extra columns

	LV_COLUMN lvc;
	lvc.mask=LVCF_FMT | LVCF_WIDTH;

	for(int nColumn=1; GetColumn(nColumn,&lvc); nColumn++)
	{
		rcItem.left=rcItem.right;
		rcItem.right+=lvc.cx;

	 	int nRetLen=GetItemText(nItem,nColumn,szBuff,sizeof(szBuff));
		if(nRetLen==0) continue;

		pszText=MakeShortString(pDC,szBuff,rcItem.right-rcItem.left,2*OFFSET_OTHER);

		UINT nJustify=DT_LEFT;

		if(pszText==szBuff)
		{
			switch(lvc.fmt & LVCFMT_JUSTIFYMASK)
			{
			case LVCFMT_RIGHT:
				nJustify=DT_RIGHT;
				break;
			case LVCFMT_CENTER:
				nJustify=DT_CENTER;
				break;
			default:
				break;
			}
		}

		rcLabel=rcItem;
		rcLabel.left+=OFFSET_OTHER;
		rcLabel.right-=OFFSET_OTHER;

		pDC->DrawText(pszText,-1,rcLabel,nJustify | DT_SINGLELINE | DT_NOPREFIX | DT_NOCLIP | DT_VCENTER);
	}

// draw focus rectangle if item has focus

	if(lvi.state & LVIS_FOCUSED && bFocus)
		pDC->DrawFocusRect(rcAllLabels);

// set original colors if item was selected

	if(bSelected)
	{
	        pDC->SetTextColor(clrTextSave);
		pDC->SetBkColor(clrBkSave);
	}
}

LPCTSTR CListCtrlEx::MakeShortString(CDC* pDC, LPCTSTR lpszLong, int nColumnLen, int nOffset)
{
	static const _TCHAR szThreeDots[]=_T("...");

	int nStringLen=lstrlen(lpszLong);

	if(nStringLen==0 || pDC->GetTextExtent(lpszLong,nStringLen).cx+nOffset<=nColumnLen)
		return(lpszLong);

	static _TCHAR szShort[MAX_PATH];

	lstrcpy(szShort,lpszLong);
	int nAddLen=pDC->GetTextExtent(szThreeDots,sizeof(szThreeDots)).cx;

	for(int i=nStringLen-1; i>0; i--)
	{
		szShort[i]=0;
		if(pDC->GetTextExtent(szShort,i).cx+nOffset+nAddLen<=nColumnLen)
			break;
	}

	lstrcat(szShort,szThreeDots);

	return(szShort);
}

void CListCtrlEx::RepaintSelectedItems()
{
	CRect rcItem, rcLabel;

// invalidate focused item so it can repaint properly

	int nItem=GetNextItem(-1,LVNI_FOCUSED);

	if(nItem!=-1)
	{
		GetItemRect(nItem,rcItem,LVIR_BOUNDS);
		GetItemRect(nItem,rcLabel,LVIR_LABEL);
		rcItem.left=rcLabel.left;

		InvalidateRect(rcItem,FALSE);
	}

// if selected items should not be preserved, invalidate them

	if(!(GetStyle() & LVS_SHOWSELALWAYS))
	{
		for(nItem=GetNextItem(-1,LVNI_SELECTED);
			nItem!=-1; nItem=GetNextItem(nItem,LVNI_SELECTED))
		{
			GetItemRect(nItem,rcItem,LVIR_BOUNDS);
			GetItemRect(nItem,rcLabel,LVIR_LABEL);
			rcItem.left=rcLabel.left;

			InvalidateRect(rcItem,FALSE);
		}
	}

// update changes 

	UpdateWindow();
}

/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx diagnostics

#ifdef _DEBUG

void CListCtrlEx::Dump(CDumpContext& dc) const
{
	CListCtrl::Dump(dc);

	dc << "m_bFullRowSel = " << (UINT)m_bFullRowSel;
	dc << "\n";
	dc << "m_cxStateImageOffset = " << m_cxStateImageOffset;
	dc << "\n";
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CListCtrlEx message handlers

LRESULT CListCtrlEx::OnSetImageList(WPARAM wParam, LPARAM lParam)
{
	if((int)wParam==LVSIL_STATE)
	{
		int cx, cy;

		if(::ImageList_GetIconSize((HIMAGELIST)lParam,&cx,&cy))
			m_cxStateImageOffset=cx;
		else
			m_cxStateImageOffset=0;
	}

	return(Default());
}

LRESULT CListCtrlEx::OnSetTextColor(WPARAM wParam, LPARAM lParam)
{
	m_clrText=(COLORREF)lParam;
	return(Default());
}

LRESULT CListCtrlEx::OnSetTextBkColor(WPARAM wParam, LPARAM lParam)
{
	m_clrTextBk=(COLORREF)lParam;
	return(Default());
}

LRESULT CListCtrlEx::OnSetBkColor(WPARAM wParam, LPARAM lParam)
{
	m_clrBkgnd=(COLORREF)lParam;
	return(Default());
}

void CListCtrlEx::OnSize(UINT nType, int cx, int cy) 
{
	m_cxClient=cx;
	CListCtrl::OnSize(nType, cx, cy);
}

void CListCtrlEx::OnPaint() 
{
	// in full row select mode, we need to extend the clipping region
	// so we can paint a selection all the way to the right
	if(m_bClientWidthSel && (GetStyle() & LVS_TYPEMASK)==LVS_REPORT && GetFullRowSel())
	{
		CRect rcAllLabels;
		GetItemRect(0,rcAllLabels,LVIR_BOUNDS);

		if(rcAllLabels.right<m_cxClient)
		{
			// need to call BeginPaint (in CPaintDC c-tor)
			// to get correct clipping rect
			CPaintDC dc(this);

			CRect rcClip;
			dc.GetClipBox(rcClip);

			rcClip.left=min(rcAllLabels.right-1,rcClip.left);
			rcClip.right=m_cxClient;

			InvalidateRect(rcClip,FALSE);
			// EndPaint will be called in CPaintDC d-tor
		}
	}

	CListCtrl::OnPaint();
}

void CListCtrlEx::OnSetFocus(CWnd* pOldWnd) 
{
	CListCtrl::OnSetFocus(pOldWnd);

	// check if we are getting focus from label edit box
	if(pOldWnd!=NULL && pOldWnd->GetParent()==this)
		return;

	// repaint items that should change appearance
	if(m_bFullRowSel && (GetStyle() & LVS_TYPEMASK)==LVS_REPORT)
		RepaintSelectedItems();
}

void CListCtrlEx::OnKillFocus(CWnd* pNewWnd) 
{
	CListCtrl::OnKillFocus(pNewWnd);

	// check if we are losing focus to label edit box
	if(pNewWnd!=NULL && pNewWnd->GetParent()==this)
		return;

	// repaint items that should change appearance
	if(m_bFullRowSel && (GetStyle() & LVS_TYPEMASK)==LVS_REPORT)
		RepaintSelectedItems();
}

void CListCtrlEx::PreSubclassWindow() 
{
	CListCtrl::PreSubclassWindow();
	EnableToolTips(TRUE);
}

int CListCtrlEx::CellRectFromPoint(CPoint& point, CRect* pRectCell, int* pCol) const
{
    if((::GetWindowLong(m_hWnd, GWL_STYLE) & LVS_TYPEMASK) != LVS_REPORT )
	   return -1;

    int nRow = GetTopIndex();
    int nBottom = nRow + GetCountPerPage();
    if(nBottom > GetItemCount())
		nBottom = GetItemCount();
        
    CHeaderCtrl* pHeader = (CHeaderCtrl*)GetDlgItem(0);
    int nColumnCount = pHeader->GetItemCount();

    for(; nRow <= nBottom; nRow++)
    {
        CRect rect;
        GetItemRect(nRow, &rect, LVIR_BOUNDS);
        if(rect.PtInRect(point))
        {
			for(int nColumn = 0; nColumn < nColumnCount; nColumn++)
			{
				int nColWidth = GetColumnWidth(nColumn);
				if(point.x >= rect.left && point.x <= (rect.left + nColWidth))
				{
					CRect rectClient;
					GetClientRect(&rectClient);
					if(pCol)
						*pCol = nColumn;
					
					rect.right = rect.left + nColWidth;

					if(rect.right > rectClient.right) 
						rect.right = rectClient.right;
					
					*pRectCell = rect;
					
					return nRow;
				}

				rect.left += nColWidth;
			}
		}
	}

	return -1;
}

BOOL CListCtrlEx::OnToolTipText(UINT /*uID*/, NMHDR* pNMHDR, LRESULT* pResult)
{
    BOOL bRet = TRUE;
#ifdef _TOOL_TIP_ENABLE
	TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
    TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
    UINT nID = pNMHDR->idFrom;
    if(!nID)
    	bRet = FALSE;

	if(bRet)
	{
		int nRow = ((nID-1) >> 10) & 0x3fffff ;
		int nCol = (nID-1) & 0x3ff;
		CString strTipText = GetItemText(nRow, nCol);
		strTipText.TrimRight();
		strTipText.TrimLeft();
#ifndef _UNICODE
		if (pNMHDR->code == TTN_NEEDTEXTA)
			lstrcpyn(pTTTA->szText, strTipText, 80);
		else
			_mbstowcsz(pTTTW->szText, strTipText, 80);
#else
		if(pNMHDR->code == TTN_NEEDTEXTA)
			_wcstombsz(pTTTA->szText, strTipText, 80);
		else
			lstrcpyn(pTTTW->szText, strTipText, 80);
#endif
	}
    
	*pResult = 0;
#endif

    return bRet;
}

int CListCtrlEx::OnToolHitTest(CPoint point, TOOLINFO* pTI) const
{
	int nID = -1;
#ifdef _TOOL_TIP_ENABLE
	int nCol;
	CRect rect;
	int nRow = CellRectFromPoint(point, &rect, &nCol);
	if(nRow == -1 ) 
		return -1;
	
	pTI->hwnd = m_hWnd;
	pTI->uId = (UINT)((nRow << 10) + (nCol & 0x3ff) + 1);
	nID = pTI->uId
	pTI->lpszText = LPSTR_TEXTCALLBACK;
	
	pTI->rect = rect;
#endif
	
	return nID;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网站导航| 日韩成人av影视| 婷婷夜色潮精品综合在线| 国产一区二区中文字幕| 日本二三区不卡| 久久婷婷国产综合精品青草| 午夜伦欧美伦电影理论片| 高清不卡一二三区| 日韩小视频在线观看专区| 一区二区三区欧美视频| www.性欧美| 久久这里只有精品首页| 蜜桃视频一区二区| 欧美性感一类影片在线播放| 1024国产精品| 国产成人av电影在线| 欧美mv和日韩mv国产网站| 亚洲不卡一区二区三区| 91一区二区三区在线观看| 久久久久久久久久久久久久久99 | 日韩欧美视频在线| 亚洲精选视频在线| av亚洲产国偷v产偷v自拍| 久久久99精品久久| 精品一区二区免费视频| 日韩亚洲电影在线| 蜜臀av国产精品久久久久| 欧美裸体bbwbbwbbw| 亚洲国产另类av| 欧美视频一区二区| 一区二区在线观看视频在线观看| 中文字幕第一区第二区| 国产黄色精品视频| 欧美韩国日本不卡| a级高清视频欧美日韩| 国产目拍亚洲精品99久久精品| 国产亚洲人成网站| 九九精品视频在线看| 精品国产一区二区精华| 国产精品一二三四区| 国产午夜精品一区二区三区四区| 亚洲蜜桃精久久久久久久| 99久久777色| 亚洲一二三专区| 777亚洲妇女| 青青草97国产精品免费观看| 日韩欧美另类在线| 国产不卡视频一区| 亚洲视频香蕉人妖| 欧美在线一区二区三区| 免费欧美高清视频| 国产农村妇女精品| 色综合久久中文字幕综合网| 亚洲在线中文字幕| 日韩一区二区三区精品视频| 久草这里只有精品视频| 国产精品国产三级国产有无不卡| 免费xxxx性欧美18vr| 日韩免费一区二区| jvid福利写真一区二区三区| 一区二区三区欧美视频| 日韩欧美电影在线| 成人动漫一区二区三区| 五月婷婷综合在线| 久久久精品tv| 欧美中文字幕一区| 国内外精品视频| 亚洲曰韩产成在线| 日韩精品一区二区三区蜜臀 | 一本大道综合伊人精品热热| 午夜精品久久久久久| 久久久影视传媒| 欧美色精品在线视频| 国产在线一区观看| 亚洲电影你懂得| 久久久久久免费毛片精品| 一本一道久久a久久精品| 日本中文在线一区| 国产精品丝袜一区| 日韩视频永久免费| 色欧美日韩亚洲| 大美女一区二区三区| 日韩二区三区四区| 亚洲欧美在线观看| 欧美mv和日韩mv国产网站| 色美美综合视频| 国产寡妇亲子伦一区二区| 秋霞电影一区二区| 亚洲黄色小视频| 国产精品久久久久毛片软件| 日韩一区二区视频| 欧美色欧美亚洲另类二区| eeuss国产一区二区三区| 韩国av一区二区| 秋霞电影一区二区| 午夜精品久久久久久久99水蜜桃| 欧美日韩免费电影| 成人app软件下载大全免费| 久久激五月天综合精品| 天天综合网 天天综合色| 亚洲免费在线视频| 亚洲丝袜制服诱惑| 国产精品欧美久久久久无广告| 99re亚洲国产精品| 成人av网站在线观看免费| 国产精品一区久久久久| 国产一区二区三区视频在线播放| 国产亚洲一区二区在线观看| 欧美成人vr18sexvr| 日韩一区二区在线观看视频| 欧美午夜电影一区| 欧美伊人久久久久久久久影院| 午夜精品久久久久久久久久| 亚洲视频在线一区观看| 中文字幕中文乱码欧美一区二区| 在线亚洲免费视频| 91丨九色丨蝌蚪丨老版| 91色综合久久久久婷婷| 91视频国产观看| 色噜噜狠狠成人网p站| 日本精品裸体写真集在线观看| 奇米影视一区二区三区| 蜜桃精品在线观看| 蜜桃视频在线观看一区| 久久国产精品免费| 国产美女精品在线| 99久久综合精品| 欧美中文字幕久久 | 美日韩一区二区| 日韩av中文字幕一区二区| 久久精品国产亚洲一区二区三区| 国产精品电影一区二区| 亚洲乱码国产乱码精品精的特点 | 日韩福利电影在线| 美女免费视频一区二区| 精品一区二区三区在线播放视频 | 国产精品少妇自拍| 亚洲欧洲精品天堂一级| 亚洲午夜电影在线| 久久精品av麻豆的观看方式| 粉嫩aⅴ一区二区三区四区| 一本一本久久a久久精品综合麻豆| 老司机一区二区| 国产成人免费9x9x人网站视频| 亚洲成年人网站在线观看| 久久99精品国产麻豆婷婷洗澡| 中文字幕一区二区在线播放| 午夜影院在线观看欧美| 国内不卡的二区三区中文字幕 | 色国产综合视频| 欧美美女网站色| 国产日韩欧美精品电影三级在线| 日韩精品一区二区三区四区| 国产亚洲精品bt天堂精选| 自拍av一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 午夜影院久久久| 成人精品一区二区三区中文字幕| 日本不卡一二三| 91一区二区在线观看| 欧美一级片免费看| 亚洲视频免费在线| 狠狠色丁香久久婷婷综合丁香| 天堂一区二区在线免费观看| 国产一区 二区| 欧美最新大片在线看| 国产欧美日韩视频一区二区| 午夜精品123| 色香蕉成人二区免费| 日韩视频免费观看高清完整版 | 色婷婷av久久久久久久| 精品国产1区2区3区| 亚洲一卡二卡三卡四卡| 成人网在线免费视频| 日韩一级视频免费观看在线| 亚洲欧洲精品一区二区三区不卡| 亚洲国产成人自拍| 精品一区二区影视| 欧美亚洲图片小说| 综合中文字幕亚洲| 成人在线一区二区三区| 精品日韩欧美在线| 日韩制服丝袜av| 欧美久久免费观看| 亚洲美女一区二区三区| 99久久精品免费观看| 国产欧美日韩不卡| 国产盗摄精品一区二区三区在线| 99久久婷婷国产综合精品电影| 99久久伊人精品| 欧美国产视频在线| 国产成人无遮挡在线视频| 久久蜜臀精品av| 国产一区二区在线观看免费| 日韩免费观看高清完整版| 免费人成在线不卡| 欧美成人aa大片| 精品亚洲aⅴ乱码一区二区三区| 成人免费毛片app| 国产日韩高清在线|