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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tyopcclientview.cpp

?? OPC Client 源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
				rc.top = rcitem.top;
							
				// Force a repaint of the area:
				cList.InvalidateRect (&rc, FALSE);
				}
			}
			break;

		// Use default processing of all other event types:
		default:
			CListView::OnTimer (nIDEvent);
			break;
		}
}

// **************************************************************************
// OnToolHitTest ()
//
// Description:
//	Called to determine if the point is over a tool.  Return the ID of the
//	tool found (Documentaion says return 1 if found, otherwise -1.  After
//	researching this, we found that this is not the case.  We need to return
//	a unique ID for each tool found or -1 if no tool is found.)  Tool in our 
//	case refers to an item/subitem cell.
//
// Parameters:
//  CPoint		cPoint		Location of cursor.
//	TOOLINFO	*pTI		Structure containing information about a 
//							  tool in a ToolTip control. 
//
// Returns:
//  int - ID of the tool found or -1 if no tool found.
// **************************************************************************
int CViewOPCItem::OnToolHitTest (CPoint cPoint, TOOLINFO *pTI) const
	{
	int nRow = 0;
	int nCol = 0;

	// Get the (sub)item cell that the point resides in:
	CRect rc;
	nRow = GetCellRectFromPoint (cPoint, rc, &nCol);

	// If no cell was hit (indicated by nRow = -1), or if the cell does
	// not require a tool tip (entire text can fit in cell), then
	// return -1 (no tool found).
	if ((nRow == -1) || !(RequireCellToolTip (nRow, nCol, rc)))
		return (-1);

	// If we make it here, then the hit was in a cell that requires a 
	// tool tip to display entire text.

	// Fill the toolinfo structure (function's out parameter):

	// Handle to the window that contains the tool (i.e. this view):
	pTI->hwnd = m_hWnd;
	
	// Compute a unique tool ID from row and cell.  Ten least significant
	// bits will be the column number (up to 1023 columns), remaining 22
	// bits will be the row number (up 4194303 to rows).  Add one to make
	// ID non-zero since the list view will automatically create a tip
	// with ID zero.
	pTI->uId = (UINT)((nRow << 10) + (nCol & 0x3FF) + 1);

	// Get tool text through callback (TTN_NEEDTEXT notification)
	pTI->lpszText = LPSTR_TEXTCALLBACK;

	// Tool boundary:
	pTI->rect = rc;						// tool rect boundary

	// Return the ID of the tool:
	return (pTI->uId);
}

// **************************************************************************
// GetCellRectFromPoint ()
//
// Description:
//	Return the cell boundaries that a point resides in, along with the 
//	associated list control row and column.
//
// Parameters:
//  CPoint		&cPoint		Point.
//	CRect		&rc			Rectangle that defines cell cPoint resides in.
//	int			*pCol		Column cPoint resides in.		
//
// Returns:
//  int	- The row cPoint resides in, or -1 if not in a cell.
// **************************************************************************
int CViewOPCItem::GetCellRectFromPoint (CPoint &cPoint, CRect &rc, int *pCol) const
{
	int nCol = 0;	
	int nRow = 0;
	int nBottom = 0;
	int cnColumns = 0;

	// Get reference to our list control:
	CListCtrl &cList = GetListCtrl ();

	// Get the row number of top item:
	nRow = cList.GetTopIndex ();

	// Compute the row number of bottom item:
	nBottom = nRow + cList.GetCountPerPage ();

	// Make sure bottom row number is valid:
	if (nBottom > cList.GetItemCount ())
		nBottom = cList.GetItemCount ();
	
	// Get the number of columns (better be NUMCOLUMNS):
	CHeaderCtrl* pHeader = (CHeaderCtrl*) GetDlgItem (0);
	cnColumns = pHeader->GetItemCount ();	
	
	// Determine which row the hit occurred.  Loop over visible rows:
	for (; nRow <= nBottom; nRow++)	
		{
		// Get bounding rect of item:		
		cList.GetItemRect (nRow, &rc, LVIR_BOUNDS);		
		
		// If the point falls in bounds, we found the row:
		if (rc.PtInRect (cPoint))		
			{
			// Now find the column.  Loop over columns:
			for (nCol = 0; nCol < cnColumns; nCol++)
				{
				// Get the width of column:
				int nColWidth = cList.GetColumnWidth (nCol);				
				
				// If the within the column boundaries, we found the column:
				if (cPoint.x >= rc.left && cPoint.x <= (rc.left + nColWidth))				
					{
					// At this point, rc will describe all but the right
					// boundary of the cell.  The top and bottom we set
					// when we found the row.  The left boundary was set
					// when we checked this column.

					// Now get client area.  We will use it later:
					CRect rcClient;
					GetClientRect (&rcClient);

					// Set the column number for output, provided pointer
					// was set by colling function:
					if (pCol) 
						*pCol = nCol;

					// Adjust right boundary so that rc now full describes
					// the cell:
					rc.right = rc.left + nColWidth;

					// Adjust the right boundary again to ensure that it does
					// not exceed client area:
					if (rc.right > rcClient.right)
						rc.right = rcClient.right;

					// We have everything we need now, so return:
					return (nRow);				
					}				
				
				// Adjust the left boundary so we can check the next column:
				rc.left += nColWidth;			
				}		
			}	
		}

	// If we make it here, then hit was not over a cell.  Return
	// -1 to indicate this:
	return (-1);
}

// **************************************************************************
// RequireCellToolTip ()
//
// Description:
//	Determins if a cell tool tip is required.  Tool tip is required if cell
//	is too narrow to display its full text.
//
// Parameters:
//  int			nRow		Row number of cell.
//	int			nCol		Column number of cell.
//	CRect		rc			Rectangle that bounds the cell.
//
// Return:
//  bool - true if tool tip is requred.
// **************************************************************************
bool CViewOPCItem::RequireCellToolTip (int nRow, int nCol, CRect rc) const
	{
	// Get reference to our list control:
	CListCtrl &cList = GetListCtrl ();

	// Get cell text:
	CString strText;
	strText = cList.GetItemText (nRow, nCol);	

	// Create a device context so we can get the cell text extent:
	CWindowDC dc (&cList);

	// Set the current font:
	dc.SelectObject (cList.GetFont ());

	// Get the size of the text (given device context and font):
	CSize size = dc.GetTextExtent (strText);

	// If the string is longer then the column width, then we will return
	// true (need tool tip).  Otherwise we will return false.  Subtract
	// twenty from cell's width for column buffering.
	return (size.cx >= (rc.right - rc.left - 20));
}

void CViewOPCItem::OnItemClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

void CViewOPCItem::PreSubclassWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CListView::PreSubclassWindow();

	// Enable tooltips:
	EnableToolTips (TRUE);

}

void CViewOPCItem::OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here

	// Create a wait cursor object.  This will cause the wait cursor, 
	// usually an hourglass, to be displayed.  When this object goes
	// out of scope, its destructor will restore the previous cursor
	// type.
	CWaitCursor wc;

	// Get column index from message notification structure:
	WORD wColumn = ((NM_LISTVIEW *)pNMHDR)->iSubItem;

	// Record change in sorting parameters:

	// If same sort column selected, toggle the sort order:
	if (wColumn == sm_wSortColumn)
		sm_wSortOrder = !sm_wSortOrder;

	// Else sort using data in new sort column:
	else
		sm_wSortColumn = wColumn;

	// Sort the list using new column and order settings:
	SortItems ();
	
	*pResult = 0;
}

void CViewOPCItem::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CListView::OnRButtonDown(nFlags, point);
//	TRACE("CViewOPCItem::OnRButtonDown()---1\n");

	// Get reference to our list control:
	CListCtrl &cList = GetListCtrl ();

	// See if the click was on an item.  Return value will be item index hit
	// was on, or -1 if hit was not on an item.  Additional information will
	// also be loaded into flags parameter.
	UINT uHitFlags;
	int nItem = cList.HitTest (point, &uHitFlags);
	BOOL bCurSelItemState=false;	//當(dāng)前選擇項狀態(tài)
	if (nItem >= 0 && (uHitFlags & LVHT_ONITEM)) //
		bCurSelItemState=cList.GetItemState (nItem, LVIS_SELECTED);
//	int nFlags=0;
	if(!(nFlags & MK_CONTROL)	//沒有使用MK_CONTROL
	 &&!(nFlags & MK_SHIFT)		//沒有使用MK_SHIFT
	 && !bCurSelItemState		//當(dāng)前項沒有選擇
		)
	{	//清除選擇標(biāo)記
		int nSelIndex = cList.GetNextItem (-1, LVNI_ALL | LVNI_SELECTED);
		while (nSelIndex >= 0)
		{
			//清除選擇標(biāo)記:
			cList.SetItemState (nSelIndex, ~LVIS_SELECTED, LVIS_SELECTED);
			nSelIndex = cList.GetNextItem (nSelIndex, LVNI_ALL | LVNI_SELECTED);
		}
	}
	//
	if (nItem >= 0 && (uHitFlags & LVHT_ONITEM)) //
		if (!cList.GetItemState (nItem, LVIS_SELECTED))	//沒有選中
			cList.SetItemState (nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

	int uSelectedCount=cList.GetSelectedCount ();
	TRACE("CViewOPCItem::OnRClick()--uSelectedCount=%d\n",uSelectedCount);
	DWORD	dwSelItem=SEL_BRANCH_OPCITEM_NULL;
	switch(uSelectedCount)
	{
	case 0:
		dwSelItem=SEL_BRANCH_OPCITEM_NULL;
		break;
	case 1:
		dwSelItem=SEL_BRANCH_OPCITEM_ONE;
		break;
	default:
		dwSelItem=SEL_BRANCH_OPCITEM_MORE;
	}

	//設(shè)定選擇級數(shù)
	CTYOPCClientDoc* pDoc=(CTYOPCClientDoc*)GetDocument();
	ASSERT(pDoc);
	pDoc->SetSelBranch (dwSelItem);


	//加載相應(yīng)的菜單:
	CMenu cMenuUp;
 	CMenu* pMenu;
	cMenuUp.LoadMenu (IDR_MAINFRAME);

	pMenu=cMenuUp.GetSubMenu (2)->GetSubMenu(4);						//加載菜單
	if(pMenu==NULL)
		return;

	CPoint cPtScreen=point;
//	GetCursorPos(&cPtScreen);
	ClientToScreen(&cPtScreen);

	//必須在CListView::OnRButtonDown(nFlags, point)之后調(diào)用,或在OnRClick(NMHDR* pNMHDR, LRESULT* pResult)實現(xiàn)
	//TrackPopupMenu----
	pMenu->TrackPopupMenu(		
		TPM_LEFTALIGN | TPM_RIGHTBUTTON,
		cPtScreen.x, cPtScreen.y, 
		AfxGetMainWnd ());	
//	TRACE("CViewOPCItem::OnRButtonDown()---2\n");

}

void CViewOPCItem::GetSelOPCItem(CStringArray &strSelItems)
{
	CListCtrl &cList = GetListCtrl ();
	int nSelIndex = cList.GetNextItem (-1, LVNI_ALL | LVNI_SELECTED);
//	CStringArray strSelItems;
	CString strText;
	while (nSelIndex >= 0)
	{
		strText=cList.GetItemText(nSelIndex,1);
		strSelItems.Add (strText);
		nSelIndex = cList.GetNextItem (nSelIndex, LVNI_ALL | LVNI_SELECTED);
	}
	TRACE("CViewOPCItem::GetSelOPCItem():SelItemCount=%d\n",strSelItems.GetUpperBound ()+1);
	//設(shè)定選擇級數(shù)
//	CTYOPCClientDoc* pDoc=(CTYOPCClientDoc*)GetDocument();
//	ASSERT(pDoc);
//	pDoc->SetSelOPCItem (strArrSel);
}

void CViewOPCItem::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CListView::OnLButtonDown(nFlags, point);

//	GetSelOPCItem();		//將當(dāng)前選中的項傳遞給DOC
}

void CViewOPCItem::OnOPCItemAsync20Write() 
{
	// TODO: Add your command handler code here
	CStringArray strSelItems;
	GetSelOPCItem(strSelItems);
	//2.彈出修改對話框
	CDlgOPCItemWrite Dlg(this);
	Dlg.SetWriteItem ((CTYOPCClientDoc*)GetDocument(),strSelItems);
	Dlg.DoModal ();

}

void CViewOPCItem::OnRClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	*pResult = 0;
	return;
	//將鼠標(biāo)點轉(zhuǎn)換為屏幕坐標(biāo)系:
	CPoint cPtScreen,point;
	GetCursorPos(&cPtScreen);
//	ClientToScreen (&cPtScreen);	
	point = cPtScreen;

	// Get reference to our list control:
	CListCtrl &cList = GetListCtrl ();

	cList.ScreenToClient(&point);
	CRect rect;
	cList.GetClientRect(rect);
	if(!rect.PtInRect (point))
		return;

	// See if the click was on an item.  Return value will be item index hit
	// was on, or -1 if hit was not on an item.  Additional information will
	// also be loaded into flags parameter.
	UINT uHitFlags;
	int nItem = cList.HitTest (point, &uHitFlags);
	BOOL bCurSelItemState=false;	//當(dāng)前選擇項狀態(tài)
	if (nItem >= 0 && (uHitFlags & LVHT_ONITEM)) //
		bCurSelItemState=cList.GetItemState (nItem, LVIS_SELECTED);
	int nFlags=0;
	if(!(nFlags & MK_CONTROL)	//沒有使用MK_CONTROL
	 &&!(nFlags & MK_SHIFT)		//沒有使用MK_SHIFT
	 && !bCurSelItemState		//當(dāng)前項沒有選擇
		)
	{	//清除選擇標(biāo)記
		int nSelIndex = cList.GetNextItem (-1, LVNI_ALL | LVNI_SELECTED);
		while (nSelIndex >= 0)
		{
			//清除選擇標(biāo)記:
			cList.SetItemState (nSelIndex, ~LVIS_SELECTED, LVIS_SELECTED);
			nSelIndex = cList.GetNextItem (nSelIndex, LVNI_ALL | LVNI_SELECTED);
		}
	}
	//
	if (nItem >= 0 && (uHitFlags & LVHT_ONITEM)) //
		if (!cList.GetItemState (nItem, LVIS_SELECTED))	//沒有選中
			cList.SetItemState (nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

	int uSelectedCount=cList.GetSelectedCount ();
	TRACE("CViewOPCItem::OnRClick()--uSelectedCount=%d\n",uSelectedCount);
	DWORD	dwSelItem=SEL_BRANCH_OPCITEM_NULL;
	switch(uSelectedCount)
	{
	case 0:
		dwSelItem=SEL_BRANCH_OPCITEM_NULL;
		break;
	case 1:
		dwSelItem=SEL_BRANCH_OPCITEM_ONE;
		break;
	default:
		dwSelItem=SEL_BRANCH_OPCITEM_MORE;
	}

//	GetSelOPCItem();		//將當(dāng)前選中的項傳遞給DOC

	//設(shè)定選擇級數(shù)
	CTYOPCClientDoc* pDoc=(CTYOPCClientDoc*)GetDocument();
	ASSERT(pDoc);
	if(pDoc->GetSelBranch()==SEL_BRANCH_OPCGROUP)
		pDoc->SetSelBranch (dwSelItem);


	//加載相應(yīng)的菜單:
	CMenu cMenuUp;
 	CMenu* pMenu;
	cMenuUp.LoadMenu (IDR_MAINFRAME);

	pMenu=cMenuUp.GetSubMenu (2)->GetSubMenu(4);						//加載菜單
	if(pMenu==NULL)
		return;
	TRACE("CViewOPCItem::OnRClick()---1\n");
	pMenu->TrackPopupMenu(
		TPM_LEFTALIGN | TPM_RIGHTBUTTON,
		cPtScreen.x, cPtScreen.y, 
		AfxGetMainWnd ());
	TRACE("CViewOPCItem::OnRClick()---2\n");
	
	*pResult = 0;
}

void CViewOPCItem::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	*pResult = 0;
	CListCtrl &cList = GetListCtrl ();
	int nSelCount=cList.GetSelectedCount ();
	if(nSelCount!=1)	
		return;

	int  nItem = -1;
    nItem = cList.GetNextItem(nItem, LVNI_SELECTED);
    ASSERT(nItem != -1);
	COPCItem *pItem = (COPCItem *)sm_pSortedItems [nItem];
	if(pItem)
	{
		//得到選擇組
		CTYOPCClientDoc* pDoc=(CTYOPCClientDoc*)GetDocument();
		ASSERT(pDoc);
		COPCGroup* pGroup=pDoc->m_cOPCMgt.GetSelOPCGroup ();
		CDlgOPCItemProperty dlg(pGroup,pItem);
		if(IDOK==dlg.DoModal())
		{
			Invalidate();
			pDoc->SetModifiedFlag (TRUE);
		}
	}
    

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人一区二区三区片免费 | 成人精品视频一区二区三区尤物| 日韩手机在线导航| 麻豆国产精品视频| 精品国产乱码久久久久久久久| 麻豆国产精品视频| 欧美国产精品专区| 91免费版pro下载短视频| 亚洲精品美腿丝袜| 欧美一区二区三区喷汁尤物| 老司机午夜精品99久久| 欧美极品另类videosde| 91蝌蚪porny| 亚洲少妇30p| 91精品国产综合久久福利软件 | 欧美mv日韩mv国产| 成人亚洲精品久久久久软件| 亚洲黄色免费电影| 日韩欧美激情在线| 成人av中文字幕| 午夜伦理一区二区| 国产欧美精品一区二区色综合| 日本道色综合久久| 美女被吸乳得到大胸91| 欧美国产一区二区| 欧美日韩国产高清一区二区三区| 国产一区二区剧情av在线| 亚洲理论在线观看| 欧美va在线播放| 色综合天天综合网国产成人综合天 | 日韩一区二区电影网| 成人开心网精品视频| 偷拍亚洲欧洲综合| 欧美国产一区二区| 欧美一区二区视频在线观看| 成人久久视频在线观看| 亚洲制服丝袜av| 国产日韩欧美精品电影三级在线| 欧美性大战久久久| 国产不卡视频在线观看| 亚洲成人av资源| 亚洲天堂a在线| 精品日韩成人av| 欧美日韩国产123区| 国产91精品一区二区麻豆网站| 亚洲高清视频的网址| 欧美高清在线视频| 精品福利在线导航| 国产剧情一区在线| 日韩精品福利网| 亚洲综合自拍偷拍| 欧美国产精品一区二区| 欧美不卡一区二区三区四区| 欧美主播一区二区三区| 成人污视频在线观看| 精品一二三四区| 午夜视频一区在线观看| 亚洲女同一区二区| 国产精品国产自产拍高清av王其 | 久久女同精品一区二区| 欧美一区二区三区喷汁尤物| 欧美丝袜丝交足nylons图片| 色综合视频在线观看| 成人在线视频一区| 国产伦精品一区二区三区视频青涩 | 亚洲免费观看高清在线观看| 国产亚洲欧美一区在线观看| 精品免费99久久| 日韩一区二区三区观看| 欧美日韩一区三区四区| 91麻豆精品在线观看| av亚洲产国偷v产偷v自拍| 国产成人在线电影| 国产伦精品一区二区三区免费迷| 免费在线观看不卡| 日韩二区三区四区| 天天影视网天天综合色在线播放| 亚洲免费观看高清完整版在线观看 | 天使萌一区二区三区免费观看| 伊人一区二区三区| 亚洲美女视频在线观看| 日韩一区在线播放| 中文在线免费一区三区高中清不卡| 欧美精品一区二区三区四区| 日韩欧美卡一卡二| 久久尤物电影视频在线观看| 久久久久久夜精品精品免费| 精品福利一区二区三区免费视频| 欧美成人高清电影在线| 久久先锋资源网| 久久精品视频在线看| 国产亚洲精品福利| 国产精品女主播在线观看| 中文字幕第一页久久| 国产精品久久久久久久午夜片| 中文字幕+乱码+中文字幕一区| 亚洲欧洲日本在线| 亚洲一线二线三线视频| 亚洲制服丝袜在线| 欧美日韩亚洲综合在线| 欧美精品1区2区| 精品久久久久久无| 中文字幕免费一区| 亚洲精品ww久久久久久p站| 亚洲在线视频免费观看| 日韩成人av影视| 国产原创一区二区三区| 北条麻妃国产九九精品视频| 日本高清视频一区二区| 欧美一区二视频| 国产亚洲美州欧州综合国| 亚洲丝袜另类动漫二区| 亚洲国产欧美在线人成| 国产精品资源网| 91在线码无精品| 欧美一区二区三区不卡| 国产精品网曝门| 午夜欧美在线一二页| 国产一区二区美女| 精品视频全国免费看| 精品国产乱子伦一区| **性色生活片久久毛片| 日韩精品欧美精品| 成人高清免费观看| 欧美日韩的一区二区| 国产精品久久毛片a| 午夜精品久久久久影视| 福利电影一区二区三区| 欧美精三区欧美精三区 | 国产精品卡一卡二卡三| 亚洲r级在线视频| 国产91丝袜在线播放九色| 欧美美女视频在线观看| 国产精品视频你懂的| 日本美女一区二区| 色综合久久久久| 久久蜜桃一区二区| 亚洲成人1区2区| 91在线看国产| 久久久九九九九| 裸体健美xxxx欧美裸体表演| 色综合视频一区二区三区高清| 久久色视频免费观看| 婷婷综合在线观看| 色婷婷av一区二区三区gif| 久久夜色精品国产噜噜av| 亚洲麻豆国产自偷在线| 国产宾馆实践打屁股91| 日韩免费福利电影在线观看| 一区二区在线观看视频| 成人禁用看黄a在线| 精品国产伦一区二区三区免费| 首页欧美精品中文字幕| 色综合久久中文综合久久97| 中文字幕一区二区视频| 国产一区免费电影| 欧美白人最猛性xxxxx69交| 亚洲18色成人| 欧洲人成人精品| 亚洲色图一区二区三区| 成熟亚洲日本毛茸茸凸凹| 欧美精品一区二区三区高清aⅴ | 麻豆国产精品一区二区三区| 欧美日本免费一区二区三区| 一区二区三区视频在线看| 成人免费视频一区| 中文字幕第一区| www.亚洲精品| 中文字幕日韩一区二区| 成av人片一区二区| 国产精品美女久久久久av爽李琼| 国产精品一区在线| 久久久久久电影| 成人教育av在线| 一区在线播放视频| 色综合久久久网| 亚洲国产视频a| 欧美精品在线观看播放| 五月综合激情网| 91精品麻豆日日躁夜夜躁| 日本视频一区二区三区| 日韩午夜激情免费电影| 精品影视av免费| 久久久久久99久久久精品网站| 国产成人综合视频| 亚洲欧洲99久久| 在线视频一区二区三| 亚洲www啪成人一区二区麻豆| 欧美电影在线免费观看| 麻豆精品一二三| 欧美激情中文字幕一区二区| 97精品超碰一区二区三区| 一区二区高清免费观看影视大全| 欧美午夜精品久久久久久超碰 | 日本成人在线视频网站| 欧美videos大乳护士334| 成人黄色在线视频| 亚洲精品视频观看| 在线播放国产精品二区一二区四区 | 国产在线不卡一区|