亚洲欧美第一页_禁久久精品乱码_粉嫩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人片www| 久久综合视频网| 91网上在线视频| 日韩专区一卡二卡| 欧美激情一区三区| 欧美精品久久一区二区三区| 国模无码大尺度一区二区三区| 亚洲欧洲综合另类在线| 久久一日本道色综合| 欧美剧情片在线观看| 欧美撒尿777hd撒尿| 91视频你懂的| 97久久精品人人做人人爽50路| 欧美aⅴ一区二区三区视频| 国产精品福利电影一区二区三区四区 | 国内久久精品视频| 三级影片在线观看欧美日韩一区二区| 中文字幕欧美三区| 中文av字幕一区| 欧美韩国日本综合| 国产精品久久久久久久岛一牛影视| 欧美一区二区成人6969| 91精品国产乱码| 日韩欧美国产1| 国产午夜亚洲精品午夜鲁丝片| 日韩精品一区二区三区swag| 91精品国产欧美日韩| 日韩欧美国产一二三区| 日韩欧美黄色影院| 欧美一二区视频| 久久一夜天堂av一区二区三区| 欧美韩日一区二区三区| 国产日韩一级二级三级| 国产精品国产三级国产普通话三级| 亚洲国产精品av| 亚洲电影激情视频网站| 国产在线乱码一区二区三区| 成人小视频免费观看| 91首页免费视频| 日韩精品一区二区三区蜜臀| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 图片区小说区区亚洲影院| 久久99精品国产.久久久久久| 99久久亚洲一区二区三区青草| 欧美伊人久久久久久午夜久久久久| 91精品国产综合久久久久| 中文字幕欧美三区| 久久99精品久久久久久久久久久久| 99re6这里只有精品视频在线观看| 91精品国产欧美一区二区成人 | 亚洲欧美偷拍卡通变态| 激情深爱一区二区| 日本韩国欧美国产| 国产精品热久久久久夜色精品三区 | 欧美日韩一区二区三区高清| 久久久99精品免费观看不卡| 日本午夜精品一区二区三区电影| 在线视频国产一区| 国产精品久久夜| 欧美日韩午夜在线视频| 午夜久久久久久久久| 欧美日韩国产免费一区二区| 玉米视频成人免费看| 91黄色激情网站| 亚洲男人的天堂一区二区| 9l国产精品久久久久麻豆| 中文字幕在线不卡一区二区三区| 国产剧情一区二区三区| 日本一区二区动态图| 91原创在线视频| 亚洲18女电影在线观看| 69精品人人人人| 国产成人午夜片在线观看高清观看| 国产日韩欧美综合在线| 91最新地址在线播放| 一区二区三区四区亚洲| 欧洲一区二区三区在线| 日本免费新一区视频| 26uuu欧美日本| 91日韩一区二区三区| 日韩福利电影在线| 亚洲国产精品高清| 日韩午夜精品电影| 99精品国产视频| 免费的国产精品| 一区二区三区四区激情| 久久九九影视网| 欧美v日韩v国产v| 欧美视频在线一区| av电影天堂一区二区在线| 另类的小说在线视频另类成人小视频在线 | 自拍偷拍国产精品| 欧美成人精品二区三区99精品| 成人精品一区二区三区中文字幕| 亚洲国产精品久久久久秋霞影院| wwwwww.欧美系列| 欧美日韩国产综合视频在线观看| 成人精品高清在线| 久久99精品一区二区三区| 亚洲第四色夜色| 亚洲免费在线看| 中文字幕一区二区三区蜜月| 26uuu欧美| 久久久久久99久久久精品网站| 4hu四虎永久在线影院成人| 色香色香欲天天天影视综合网| 国产.欧美.日韩| 国产sm精品调教视频网站| 东方欧美亚洲色图在线| 大陆成人av片| 91蜜桃视频在线| 色成年激情久久综合| 欧美色网站导航| 91麻豆精品久久久久蜜臀| 欧美一级日韩一级| 精品国内片67194| 国产精品美女一区二区三区 | 91一区二区在线观看| 91污在线观看| 日韩欧美一级精品久久| 精品剧情在线观看| 日韩一区二区三区视频在线| 欧美aⅴ一区二区三区视频| 天堂va蜜桃一区二区三区漫画版| 成人综合婷婷国产精品久久免费| 欧美一区二区精品在线| 一二三区精品视频| 91色porny在线视频| 欧美日产在线观看| 国产精品区一区二区三区 | 亚洲第一主播视频| 国产一区二区主播在线| 在线视频综合导航| 精品日韩99亚洲| 五月天亚洲精品| 成人免费视频免费观看| 91黄色在线观看| 国产欧美日韩一区二区三区在线观看| 一区二区三区资源| 成人高清视频免费观看| 日韩精品一区二区三区老鸭窝| 亚洲国产欧美在线| 97精品电影院| 手机精品视频在线观看| 88在线观看91蜜桃国自产| 亚洲国产一区二区视频| 色悠悠久久综合| 玉足女爽爽91| 欧美精品第1页| 热久久一区二区| 精品国产乱码久久久久久图片| 日本中文一区二区三区| 欧美一区二区网站| 免费看欧美美女黄的网站| 91精品久久久久久久99蜜桃| 日韩在线一区二区三区| 欧美一级久久久| av亚洲精华国产精华精华| 国产精品免费aⅴ片在线观看| 99国产精品久久久久久久久久久| 亚洲成人av电影| 国产精品久久久久久久久搜平片 | 91在线码无精品| 在线观看日产精品| 国产日韩欧美麻豆| 日韩欧美高清一区| 欧美一区二区在线免费播放 | 青青草97国产精品免费观看 | 波多野结衣的一区二区三区| 香蕉加勒比综合久久| 国产亚洲精品超碰| 欧美一区二区三区色| 欧洲中文字幕精品| 99re热视频精品| av网站免费线看精品| 精品一二三四在线| 天堂蜜桃91精品| 一区二区三区国产豹纹内裤在线| 欧美一区二区啪啪| 欧美一级午夜免费电影| 538在线一区二区精品国产| 91丨九色丨国产丨porny| 岛国一区二区三区| 99r国产精品| 51精品视频一区二区三区| 日韩欧美123| 中文字幕高清不卡| 亚洲免费观看高清完整版在线 | 午夜精品久久久久久久| 亚洲一区在线观看免费观看电影高清| 国产精品久久久久影视| 成人免费在线播放视频| 亚洲一线二线三线久久久| 夜夜精品视频一区二区| 日韩电影一区二区三区| 久久机这里只有精品| 成人免费黄色大片| 在线观看区一区二|