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

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

?? outputsetup.cpp

?? Windows 圖形編程 書籍
?? CPP
字號:
//-----------------------------------------------------------------------------------//
//              Windows Graphics Programming: Win32 GDI and DirectDraw               //
//                             ISBN  0-13-086985-6                                   //
//                                                                                   //
//  Written            by  Yuan, Feng                             www.fengyuan.com   //
//  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
//  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
//                                                                                   //
//  FileName   : outputsetup.cpp   				                                     //
//  Description: KOutputSetup class: printer setup and page setup                    //
//  Version    : 1.00.001, Sep 7, 2000                                               //
//-----------------------------------------------------------------------------------//

#define STRICT
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <assert.h>
#include <commdlg.h>
#include <winspool.h>
#include <tchar.h>

#include "outputsetup.h"
#include "dialog.h"
#include "listview.h"

void KOutputSetup::Release(void)
{
	if ( m_pd.hDevMode )
	{
		GlobalFree(m_pd.hDevMode);
		m_pd.hDevMode = NULL;
	}
			
	if ( m_pd.hDevNames )
	{
		GlobalFree(m_pd.hDevNames);
		m_pd.hDevNames = NULL;
	}

	DeletePrinterDC();
}


void KOutputSetup::DeletePrinterDC(void)
{
	if ( m_pd.hDC )
	{
		DeleteObject(m_pd.hDC);
		m_pd.hDC = NULL;
	}
}


KOutputSetup::KOutputSetup(void)
{
	memset (&m_pd, 0, sizeof(PRINTDLG));
	m_pd.lStructSize = sizeof(PRINTDLG);
//	m_pd.nMinPage = 1;
//	m_pd.nMaxPage = 100;

	memset(& m_psd, 0, sizeof(m_psd));
	m_psd.lStructSize = sizeof(m_psd);
}

void KOutputSetup::SetDefault(HWND hwndOwner, int minpage, int maxpage)
{
	m_pd.hwndOwner   = hwndOwner;

	PrintDialog(PD_RETURNDEFAULT);

	m_pd.nFromPage = minpage;
	m_pd.nToPage   = maxpage;
	m_pd.nMinPage  = minpage;
	m_pd.nMaxPage  = maxpage;

	m_psd.hwndOwner  = hwndOwner;

	m_psd.rtMargin.left  = 1250; // 1.25 inch
	m_psd.rtMargin.right = 1250; // 1.25 inch
	m_psd.rtMargin.top   = 1000; // 1.25 inch
	m_psd.rtMargin.bottom= 1000; // 1.25 inch

	HDC hDC = CreatePrinterDC();

	int dpix = hDC ? GetDeviceCaps(hDC, LOGPIXELSX) : 300;
	int dpiy = hDC ? GetDeviceCaps(hDC, LOGPIXELSY) : 300;

	m_psd.ptPaperSize.x     = ( hDC ? GetDeviceCaps(hDC, PHYSICALWIDTH)  : 2500 ) * 1000 / dpix;
	m_psd.ptPaperSize.y     = ( hDC ? GetDeviceCaps(hDC, PHYSICALHEIGHT) : 3300 ) * 1000 / dpiy;

	m_psd.rtMinMargin.left  = ( hDC ? GetDeviceCaps(hDC, PHYSICALOFFSETX) : 75 ) * 1000 / dpix;
	m_psd.rtMinMargin.top   = ( hDC ? GetDeviceCaps(hDC, PHYSICALOFFSETY) : 12 ) * 1000 / dpiy;

	m_psd.rtMinMargin.right = m_psd.ptPaperSize.x - m_psd.rtMinMargin.left - 
		( hDC ? GetDeviceCaps(hDC, HORZRES) : 203 ) * 1000 / dpix;

	m_psd.rtMinMargin.bottom= m_psd.ptPaperSize.y - m_psd.rtMinMargin.top  - 
		( hDC ? GetDeviceCaps(hDC, VERTRES) : 266 ) * 1000 / dpiy;
		
	if ( hDC )
		DeleteObject(hDC);
//  PageSetup(PSD_RETURNDEFAULT);
}

	
KOutputSetup::~KOutputSetup(void)
{
	Release();
}


int KOutputSetup::PrintDialog(DWORD flag)
{
	m_pd.Flags = flag;
	return PrintDlg(&m_pd);
}


BOOL KOutputSetup::PageSetup(DWORD flag)
{
	m_psd.hDevMode  = m_pd.hDevMode; 
	m_psd.hDevNames = m_pd.hDevNames;
	m_psd.Flags     = flag | PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS;

	return PageSetupDlg(& m_psd);
}


const TCHAR * KOutputSetup::GetDriverName(void) const
{
	const DEVNAMES * pDevNames = (DEVNAMES *) GlobalLock(m_pd.hDevNames);

	if ( pDevNames )
		return (const TCHAR *) ( (const char *) pDevNames + pDevNames->wDriverOffset );
	else
		return NULL;
}


const TCHAR * KOutputSetup::GetDeviceName(void) const
{
	const DEVNAMES * pDevNames = (DEVNAMES *) GlobalLock(m_pd.hDevNames);

	if ( pDevNames )
		return (const TCHAR *) ( (const char *) pDevNames + pDevNames->wDeviceOffset );
	else
		return NULL;
}


const TCHAR * KOutputSetup::GetOutputName(void) const
{
	const DEVNAMES * pDevNames = (DEVNAMES *) GlobalLock(m_pd.hDevNames);

	if ( pDevNames )
		return (const TCHAR *) ( (const char *) pDevNames + pDevNames->wOutputOffset );
	else
		return NULL;
}


HDC KOutputSetup::CreatePrinterDC(void)
{
	return CreateDC(NULL, GetDeviceName(), NULL, GetDevMode());
}


/////////////////////////////////////////////////////////

void * EnumeratePrinters(DWORD flag, LPTSTR name, DWORD level, DWORD & nPrinters)
{
	DWORD cbNeeded;

	nPrinters = 0;
	EnumPrinters(flag, name, level, NULL, 0, & cbNeeded, & nPrinters);

	BYTE * pPrnInfo = new BYTE[cbNeeded];

	if ( pPrnInfo )
		EnumPrinters(flag, name, level, (BYTE *) pPrnInfo, cbNeeded, 
			& cbNeeded, & nPrinters);

	return pPrnInfo;
}


void ListPrinters(HWND hWnd, int message)
{
	DWORD nPrinters;

	PRINTER_INFO_5 * pInfo5 = (PRINTER_INFO_5 *) EnumeratePrinters(PRINTER_ENUM_LOCAL, NULL, 5, nPrinters);

	if ( pInfo5 )
	{
		for (unsigned i=0; i<nPrinters; i++)
			SendMessage(hWnd, message, 0, (LPARAM) pInfo5[i].pPrinterName);

		delete [] (BYTE *) pInfo5;
	}

	PRINTER_INFO_1 * pInfo1 = (PRINTER_INFO_1 *) EnumeratePrinters(PRINTER_ENUM_CONNECTIONS, NULL, 1, nPrinters);

	if ( pInfo1 )
	{
		for (unsigned i=0; i<nPrinters; i++)
			SendMessage(hWnd, message, 0, (LPARAM) pInfo1[i].pName);

		delete [] (BYTE *) pInfo1;
	}
}


DEVMODE * GetDEVMODE(TCHAR * PrinterName, int nPrompt)
{
	HANDLE hPrinter;

	if ( !OpenPrinter(PrinterName, &hPrinter, NULL) )
		return NULL;

	// A zero for last param returns the size of buffer needed.
	int nSize = DocumentProperties(NULL, hPrinter, PrinterName, NULL, NULL, 0);
 
	DEVMODE * pDevMode = (DEVMODE *) new char[nSize];
	
	if ( pDevMode==NULL )
		return NULL;

	// ask driver to initialize a devmode structure
	DocumentProperties(NULL, hPrinter, PrinterName, pDevMode, NULL, DM_OUT_BUFFER);

	// show property sheet to allow user modification
	BOOL rslt = TRUE;
	switch ( nPrompt )
	{
		case 1:
			rslt = AdvancedDocumentProperties(NULL, hPrinter, PrinterName, pDevMode, pDevMode) == IDOK;
			break;

		case 2:
			rslt = ( DocumentProperties(NULL, hPrinter, PrinterName, pDevMode, pDevMode, 
					    DM_IN_PROMPT | DM_OUT_BUFFER | DM_IN_BUFFER ) == IDOK );
			break;
	}

	ClosePrinter(hPrinter);

	if ( rslt )
		return pDevMode;
	else
	{
		delete [] (BYTE *) pDevMode;
		return NULL;
	}
}

class KProperty : public KDialog
{
	KListView      m_list;
	KOutputSetup * m_pSetup;
	int			 * m_pControlID;

	void AddRow(const TCHAR * one, const TCHAR * two)
	{
		m_list.AddItem(0, one);
		m_list.AddItem(1, two);
	}

	void AddRow(const TCHAR * one, const TCHAR * format, int p1, int p2=0, int p3=0, int p4=0)
	{
		TCHAR temp[64];

		wsprintf(temp, format, p1, p2, p3, p4);
		
		m_list.AddItem(0, one);
		m_list.AddItem(1, temp);
	}

	void ShowAttributes(void)
	{
		m_list.FromDlgItem(m_hWnd, m_pControlID[0]);

		RECT rect;
		GetWindowRect(m_list.GetHWND(), & rect);
		int width = rect.right - rect.left;

		m_list.AddColumn(0, width/2-5, _T("Attribute"));
		m_list.AddColumn(1, width/2-5, _T("Value"));

		AddRow(_T("hDevNames->Driver Name"), m_pSetup->GetDriverName());
		AddRow(_T("           Device Name"), m_pSetup->GetDeviceName());
		AddRow(_T("           Output Name"), m_pSetup->GetOutputName());

		const DEVMODE * pDevMode = m_pSetup->GetDevMode();

		if ( pDevMode )
		{
			AddRow(_T("hDevMode->dmDeviceName"),    (const TCHAR *) pDevMode->dmDeviceName);
			AddRow(_T("          dmSpecVersion"),   _T("0x%x"),			pDevMode->dmSpecVersion);
			AddRow(_T("          dmDriverVersion"), _T("0x%x"),			pDevMode->dmDriverVersion);
			AddRow(_T("          dmSize"),          _T("%d bytes"),		pDevMode->dmSize);
			AddRow(_T("          dmDriverExtra"),   _T("%d bytes"),		pDevMode->dmDriverExtra);

			AddRow(_T("          dmOrientation"),   _T("%d"),			pDevMode->dmOrientation);
			AddRow(_T("          dmPaperSize"),     _T("%d"),			pDevMode->dmPaperSize);
			AddRow(_T("          dmPaperLength"),   _T("%d x 100 um"),  pDevMode->dmPaperLength);
			AddRow(_T("          dmPaperWidth"),    _T("%d x 100 um"),  pDevMode->dmPaperWidth);
			AddRow(_T("          dmScale"),         _T("%d %"),         pDevMode->dmScale);
			AddRow(_T("          dmCopies"),        _T("%d copies"),    pDevMode->dmCopies);
			AddRow(_T("          dmDefaultSource"), _T("%d"),           pDevMode->dmDefaultSource);
			AddRow(_T("          dmPrintQuality"),  _T("%d"),           pDevMode->dmPrintQuality);
			AddRow(_T("          dmColor"),         _T("%d"),           pDevMode->dmColor);
			AddRow(_T("          dmDuplex"),        _T("%d"),           pDevMode->dmDuplex);
			AddRow(_T("          dmYResolution"),   _T("%d"),           pDevMode->dmYResolution);
			AddRow(_T("          dmTTOption"),      _T("%d"),           pDevMode->dmTTOption);
			AddRow(_T("          dmCollate"),       _T("%d"),           pDevMode->dmCollate);
			AddRow(_T("          dmFormName"),      (const TCHAR *) pDevMode->dmFormName);

			AddRow(_T("          dmLogPixels"),     _T("%d dpi"),       pDevMode->dmLogPixels);
			AddRow(_T("          dmBitsPerPel"),    _T("%d bpp"),       pDevMode->dmBitsPerPel);
			AddRow(_T("          dmPelsWidth"),     _T("%d pixels"),    pDevMode->dmPelsWidth);
			AddRow(_T("          dmPelsHeight"),    _T("%d pixels"),    pDevMode->dmPelsHeight);
			AddRow(_T("          dmNup"),           _T("%d"),           pDevMode->dmNup);

			AddRow(_T("          dmICMMethod"),     _T("%d"),           pDevMode->dmICMMethod);
			AddRow(_T("          dmICMIntent"),     _T("%d"),           pDevMode->dmICMIntent);
			AddRow(_T("          dmMediaType"),     _T("%d"),           pDevMode->dmMediaType);
			AddRow(_T("          dmDitherType"),    _T("%d"),           pDevMode->dmDitherType);
		}

		POINT sz;
		m_pSetup->GetPaperSize(sz);
		AddRow(_T("PAGESETUPDLG.ptPaperSize"),  _T("{ %d, %d }"),   sz.x, sz.y);

		RECT margin;
		m_pSetup->GetMinMargin(margin);
		AddRow(_T("             rtMinMargin"), _T("( %d, %d, %d, %d }"), 
			margin.left,  margin.top, margin.right, margin.bottom);

		m_pSetup->GetMargin(margin);
		AddRow(_T("             rtMargin"), _T("( %d, %d, %d, %d }"), 
			margin.left,  margin.top, margin.right, margin.bottom);

		HDC hDC = m_pSetup->CreatePrinterDC();

		AddDeviceCaps(hDC, _T("HORZSIZE"),   _T("%d mm"), HORZSIZE);
		AddDeviceCaps(hDC, _T("VERTSIZE"),   _T("%d mm"), VERTSIZE);
		AddDeviceCaps(hDC, _T("HORZRES"),    _T("%d pixel"), HORZRES);
		AddDeviceCaps(hDC, _T("VERTRES"),    _T("%d pixel"), VERTRES);
		AddDeviceCaps(hDC, _T("LOGPIXELSX"), _T("%d dpi"), LOGPIXELSX);
		AddDeviceCaps(hDC, _T("LOGPIXELSY"), _T("%d dpi"), LOGPIXELSY);
		AddDeviceCaps(hDC, _T("BITSPIXEL"),  _T("%d bpp"), BITSPIXEL);
		AddDeviceCaps(hDC, _T("PLANES"),     _T("%d"),     PLANES);

		AddDeviceCaps(hDC, _T("PHYSICALWIDTH"),   _T("%d pixels"), PHYSICALWIDTH); 
		AddDeviceCaps(hDC, _T("PHYSICALHEIGHT"),  _T("%d pixels"), PHYSICALHEIGHT);
		AddDeviceCaps(hDC, _T("PHYSICALOFFSETX"), _T("%d pixels"), PHYSICALOFFSETX);
		AddDeviceCaps(hDC, _T("PHYSICALOFFSETY"), _T("%d pixels"), PHYSICALOFFSETY);

		{
			DWORD ul = CHECKJPEGFORMAT;
								
			if ( ExtEscape(hDC, QUERYESCSUPPORT,  sizeof(ul), (char *) &ul, 0, 0) > 0)
				AddDeviceCaps(hDC, _T("JPEG support"), _T("Yes"), 0);
			else
				AddDeviceCaps(hDC, _T("JPEG support"), _T("No"), 0);
		}
		
		DeleteDC(hDC);
	}

	void ShowProperties(int type)
	{
		HWND hWnd = GetDlgItem(m_hWnd, m_pControlID[2]);

		int index = SendMessage(hWnd, LB_GETCURSEL, 0, 0);

		if ( index<0 )
			index = 0;

		TCHAR PrinterName[MAX_PATH];

		PrinterName[0] = 0;

		SendMessage(hWnd, LB_GETTEXT, index, (LPARAM) PrinterName);

		if ( PrinterName[0]==0 )
			return;

		switch ( type )
		{
			case 0:
				{
					HANDLE hPrinter;
					OpenPrinter(PrinterName, & hPrinter, NULL);
					PrinterProperties(m_hWnd, hPrinter);
					ClosePrinter(hPrinter);
				}
				break;

			case 1:
			case 2:
				{
					DEVMODE * pDevMode = GetDEVMODE(PrinterName, type);

					if ( pDevMode )
						delete [] (BYTE *) pDevMode;
				}
		}
	}

	void AddDeviceCaps(HDC hDC, const TCHAR * name, const TCHAR * format, int index)
	{
		int value = GetDeviceCaps(hDC, index);

		TCHAR temp[128];
		wsprintf(temp, _T("GetDeviceCaps(%s)"), name);

		AddRow(temp, format, value);
	}

    virtual BOOL DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    	switch (uMsg)
	    {
		    case WM_INITDIALOG:
				m_hWnd = hWnd;

				ShowAttributes();
				
				{
					TCHAR temp[MAX_PATH];

					DWORD size = MAX_PATH;
					GetDefaultPrinter(temp, & size);
					SetDlgItemText(hWnd, m_pControlID[1], temp);
				}

				ListPrinters(GetDlgItem(hWnd, m_pControlID[2]));
			    return TRUE;

		    case WM_COMMAND:
				if ( LOWORD(wParam)==m_pControlID[3] )
					ShowProperties(0);
				else if ( LOWORD(wParam)==m_pControlID[4] )
					ShowProperties(1);
				else if ( LOWORD(wParam)==m_pControlID[5] )
					ShowProperties(2);
				else switch ( LOWORD(wParam) )
				{
					case IDOK: 
						EndDialog(hWnd, LOWORD(wParam));
						return TRUE;
				}
	    }

	    return FALSE;
    }

public:
	
	KProperty(KOutputSetup & setup, int nControlID[])
	{
		m_pSetup		 = & setup;
		m_pControlID     = nControlID;
	}
};


void ShowProperty(KOutputSetup & setup, HINSTANCE hInst, int nControlID[], int dialogres)
{
	KProperty property(setup, nControlID);

	property.Dialogbox(hInst, MAKEINTRESOURCE(dialogres));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av动漫一区二区| 欧美一卡在线观看| 91精品国产欧美日韩| 国产欧美日产一区| 毛片av中文字幕一区二区| 97国产精品videossex| 日韩欧美国产wwwww| 一区二区三区欧美日| 国产成人h网站| 日韩精品一区二区三区视频| 亚洲成人黄色影院| 欧美主播一区二区三区| 国产精品乱子久久久久| 国产一区日韩二区欧美三区| 欧美男人的天堂一二区| 亚洲日本韩国一区| 不卡视频一二三四| 国产欧美精品一区二区三区四区| 日韩中文欧美在线| 欧美日韩一区国产| 亚洲午夜免费福利视频| 91久久精品日日躁夜夜躁欧美| 中文字幕免费观看一区| 韩国精品主播一区二区在线观看 | 亚洲美女电影在线| 丰满放荡岳乱妇91ww| 欧美精品一区二区久久婷婷| 日本视频一区二区| 欧美一区二区黄色| 久久se这里有精品| 亚洲精品一线二线三线| 激情综合色播激情啊| 日韩欧美亚洲另类制服综合在线 | 国产综合色视频| 日韩欧美色电影| 久久成人18免费观看| 日韩视频永久免费| 精品一区二区精品| 国产亚洲成av人在线观看导航 | 国产精品麻豆网站| 国产成都精品91一区二区三| 国产欧美日韩另类一区| 不卡免费追剧大全电视剧网站| 国产精品国产三级国产专播品爱网| 风间由美一区二区三区在线观看 | 蜜臀精品久久久久久蜜臀| 欧美电视剧免费全集观看| 久久精品国产澳门| 欧美激情在线一区二区| 99国产精品久久久久久久久久 | 国产99久久久久| 国产精品久久久久国产精品日日| av不卡免费在线观看| 亚洲人吸女人奶水| 欧美电影影音先锋| 国产精品一二三四五| 中文字幕制服丝袜成人av| 在线看日韩精品电影| 理论片日本一区| 中文字幕一区二区三区不卡| 欧美日免费三级在线| 精品一区二区三区欧美| 国产精品人人做人人爽人人添| 日本韩国一区二区| 久草热8精品视频在线观看| 国产香蕉久久精品综合网| 一本大道综合伊人精品热热 | 久久午夜电影网| 一本到不卡精品视频在线观看| 丝袜亚洲精品中文字幕一区| 亚洲精品一区二区三区四区高清| 99r国产精品| 九九**精品视频免费播放| 中文字幕人成不卡一区| 日韩一区二区精品| 99久久精品国产一区二区三区| 日本va欧美va瓶| 亚洲欧美一区二区不卡| 精品美女一区二区| 欧美日韩国产综合一区二区| 国产激情一区二区三区四区| 肉肉av福利一精品导航| 中文字幕中文字幕在线一区| 精品国产乱码久久久久久图片| 一本色道久久加勒比精品| 极品少妇xxxx偷拍精品少妇| 一区二区三区欧美| 亚洲视频免费观看| 国产欧美视频一区二区| 欧美一区二区视频观看视频| 91老师国产黑色丝袜在线| 国产精品一线二线三线精华| 视频一区中文字幕| 亚洲综合色网站| 亚洲欧洲日韩女同| 国产亚洲综合在线| 精品成人私密视频| 日韩三级视频在线看| 欧美日韩大陆一区二区| av不卡免费在线观看| 国产不卡在线一区| 国产精品1区二区.| 国产一区二三区好的| 老司机精品视频导航| 日韩精品电影在线| 日韩av电影天堂| 同产精品九九九| 视频一区二区三区入口| 亚洲综合自拍偷拍| 亚洲综合在线免费观看| 一区二区三区中文字幕| 日韩一区在线看| 亚洲欧美日韩人成在线播放| 日韩美女视频一区| 亚洲色欲色欲www| 亚洲男同性恋视频| 亚洲伊人伊色伊影伊综合网| 一区二区欧美视频| 一区二区高清免费观看影视大全| 亚洲六月丁香色婷婷综合久久| 亚洲免费av高清| 怡红院av一区二区三区| 午夜国产精品一区| 美女爽到高潮91| 国产高清精品久久久久| 国产成人综合在线观看| 波多野结衣中文一区| 99久久精品情趣| 欧美日韩另类一区| 69堂亚洲精品首页| www国产精品av| 国产精品国产精品国产专区不片| 国产精品久久久久影院老司| 艳妇臀荡乳欲伦亚洲一区| 亚洲一区在线观看免费| 捆绑变态av一区二区三区| 国产精品综合网| 一本久久精品一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美裸体一区二区三区| 91精品啪在线观看国产60岁| wwwwxxxxx欧美| 国产精品久久久久久久久免费桃花 | 国产又粗又猛又爽又黄91精品| 国产最新精品免费| 91麻豆国产精品久久| 欧美日韩黄视频| 国产欧美精品一区二区三区四区 | 久久疯狂做爰流白浆xx| 风间由美一区二区三区在线观看 | 亚洲色图欧美偷拍| 日韩一区欧美二区| 成人午夜视频免费看| 欧美丝袜第三区| 国产午夜精品一区二区| 夜夜精品视频一区二区 | 热久久久久久久| 国产99久久久精品| 欧美猛男男办公室激情| 久久久久久毛片| 一级中文字幕一区二区| 国产精品一区二区免费不卡| 在线观看免费亚洲| 久久精品亚洲乱码伦伦中文| 亚洲精品福利视频网站| 高清久久久久久| 9191久久久久久久久久久| 欧美激情一区二区| 青青草国产成人av片免费| 波多野结衣在线一区| 欧美大片在线观看| 偷窥少妇高潮呻吟av久久免费| 99国产精品久久| 国产午夜精品福利| 久久精品国产77777蜜臀| 色8久久人人97超碰香蕉987| 久久人人爽人人爽| 久久精品99国产精品日本| 欧美在线免费播放| 亚洲欧洲精品一区二区三区不卡| 国产一区二区看久久| 91精品婷婷国产综合久久 | 1024精品合集| 成人一区在线看| 久久嫩草精品久久久久| 日韩一区精品视频| 欧美自拍偷拍一区| 亚洲久本草在线中文字幕| 成人一级片网址| 国产精品网站在线| 成人免费不卡视频| 国产精品免费av| 99久久久久久| 亚洲精品免费在线| 色婷婷综合久久久| 亚洲天堂精品视频| 色综合天天综合色综合av| 亚洲男人的天堂在线aⅴ视频| 91污在线观看| 亚洲综合自拍偷拍|