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

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

?? input.cpp

?? 3D游戲展示程序
?? CPP
字號:
//--------------------------------------------------
//  Desc: The Implementation of Input
//  Author: artsylee/2006.8.8
//--------------------------------------------------
#include "../stdafx.h"
#include "Input.h"
#include "Log.h"

LPDIRECTINPUT8 g_lpDI = NULL;

//----------------------------------------
//----------------------------------------
// The Implementation of CInput
//----------------------------------------
//----------------------------------------
CInput::CInput()
{	
	m_hWnd = 0;
}

CInput::~CInput()
{
	ReleaseInput();
}

BOOL CInput::CreateInput(HWND hWnd)
{
	HRESULT hr;
	HMODULE hInst = GetModuleHandle(NULL);
	hr = DirectInput8Create((HINSTANCE)hInst, DIRECTINPUT_VERSION,
		                    IID_IDirectInput8, (void**)&g_lpDI, NULL);
	if(FAILED(hr))
	{
		WriteLog(INFO_ERROR, "Create DirectInput8 Failed");
		return FALSE;
	}
	m_hWnd = hWnd;
	m_Key.CreateDevice(hWnd);
	m_Mouse.CreateDevice(hWnd);
	return TRUE;
}

void CInput::ReleaseInput(void)
{
	m_Key.ReleaseDevice();
	m_Mouse.ReleaseDevice();
}

//-------------------------------------------------
// Get input information in a loop
//-------------------------------------------------
BOOL CInput::UpdateBufferInput(stInputInfo *input)
{
//	if(m_Key==NULL || m_Mouse==NULL)
//		return FALSE;

	GetCursorPos(&(input->point));
	ScreenToClient(m_hWnd, &(input->point));

	m_Key.GetData();
	m_Mouse.GetData();
	m_Key.GetState();
	m_Mouse.GetState();

	input->KeyValue = m_Key.GetBufferKey();
	input->MouseValue = m_Mouse.GetBufferKey();
	if((input->point.x != m_OldPt.x) || (input->point.y != m_OldPt.y))
	{
		input->MouseMove = true;
	}
	else
	{
		input->MouseMove = false;
	}
	return TRUE;
}

//----------------------------------------
//----------------------------------------
// The Implementation of CInputDevice
//----------------------------------------
//----------------------------------------
CInputDevice::CInputDevice()
{
	m_lpDevice = NULL;

	memset(m_BufferData, 0, sizeof(m_BufferData));
	m_BufferStart = 0;
	m_BufferEnd = 0;
}

CInputDevice::~CInputDevice()
{

}

//-------------------------------------------------
// Get buffer value in buffered mode
//-------------------------------------------------
// return 0 if no buffer key
unsigned int CInputDevice::GetBufferKey(void)
{
	if(m_BufferStart == m_BufferEnd)
		return 0;

	int ret = m_BufferStart;
	m_BufferStart++;
	if(m_BufferStart >= BUFFERSIZE)
		m_BufferStart = 0;

	return m_BufferData[ret];
}

//-------------------------------------------------
// Clear all buffer value in buffered
//-------------------------------------------------
void CInputDevice::ClearBufferKey(void)
{
	GetData();
	while(TRUE)
	{
		if(GetBufferKey()== 0) 
			break;
	}
}


//----------------------------------------
//----------------------------------------
// The Implementation of CKey
//----------------------------------------
//----------------------------------------
CKey::CKey()
{
	memset(m_KeyState, 0, sizeof(m_KeyState));
}

CKey::~CKey()
{
	ReleaseDevice();
}

BOOL CKey::CreateDevice(HWND hWnd)
{
	//需要dxguid.lib才能找到_IID_IDirectInput8A
	HRESULT hr;
	HMODULE hInst = GetModuleHandle(NULL);
	if(g_lpDI == NULL)
	{
		hr = DirectInput8Create((HINSTANCE)hInst, DIRECTINPUT_VERSION,
		                    IID_IDirectInput8, (void**)&g_lpDI, NULL);
		if(FAILED(hr))
		{
			WriteLog(INFO_ERROR, "Create DirectInput8 Failed");
			return FALSE;
		}
	}

	hr = g_lpDI->CreateDevice(GUID_SysKeyboard, &m_lpDevice, NULL);
	if(FAILED(hr))
	{
		ReleaseDevice();
		WriteLog(INFO_ERROR, "Create Keyboard Device Failed");
		return FALSE;
	}
	// Set the data format
	hr = m_lpDevice->SetDataFormat(&c_dfDIKeyboard); 
 
    if(FAILED(hr))
    { 
        ReleaseDevice();
		WriteLog(INFO_ERROR, "Set Keyboard Data Format Failed");
        return FALSE; 
    } 
 
    // Set the cooperative level 
    hr = m_lpDevice->SetCooperativeLevel(hWnd, 
                             DISCL_FOREGROUND | DISCL_NONEXCLUSIVE); 
    if(FAILED(hr))
    { 
        ReleaseDevice();
		WriteLog(INFO_ERROR, "Set Keyboard Cooperative Level Failed");
        return FALSE; 
    } 

	// Set property
	DIPROPDWORD property;
	property.diph.dwSize = sizeof(DIPROPDWORD);
	property.diph.dwHeaderSize = sizeof(DIPROPHEADER);
	property.diph.dwObj = 0;
	property.diph.dwHow = DIPH_DEVICE;
	property.dwData = BUFFERSIZE;

	hr = m_lpDevice->SetProperty(DIPROP_BUFFERSIZE, &property.diph);
	if(FAILED(hr))
	{
		ReleaseDevice();
		WriteLog(INFO_ERROR, "Set Key Buffer Size Failed");
		return FALSE; 
    }
 
    // Get access to the input device. 
/*    hr = m_lpDevice->Acquire(); 
    if(FAILED(hr))
    { 
        ReleaseDevice();
		WriteLog(INFO_ERROR, "Acquire Keyboard Failed"); 
        return FALSE; 
    }*/
	return TRUE;
}

void CKey::ReleaseDevice(void)
{
	if(m_lpDevice)
	{
		m_lpDevice->Unacquire();
		m_lpDevice->Release();
		m_lpDevice = NULL;
	}
}

//-------------------------------------------------
// Read the device's state when in immediate mode
//-------------------------------------------------
HRESULT CKey::GetState(void)
{
	HRESULT hr;
	if(!m_lpDevice)
	{
		WriteLog(INFO_WARNING, "CKey::m_lpDevice==NULL");
		return -1;
	}

	ZeroMemory(m_KeyState, sizeof(m_KeyState));
	hr = m_lpDevice->GetDeviceState(sizeof(m_KeyState), (LPVOID)&m_KeyState);
	if(FAILED(hr))
	{
		hr = m_lpDevice->Acquire();
		while(hr == DIERR_INPUTLOST)
			hr = m_lpDevice->Acquire();
		if(hr == DIERR_OTHERAPPHASPRIO || hr == DIERR_NOTACQUIRED)
		{
		//	WriteLog(INFO_ERROR, "CKey::GetState Unacquired");
			return -1;
		}
		ZeroMemory(m_KeyState, sizeof(m_KeyState));
		hr = m_lpDevice->GetDeviceState(sizeof(m_KeyState), (LPVOID)&m_KeyState);
	}
	if(FAILED(hr))
	{
		WriteLog(INFO_WARNING, "CKey::GetState Failed");
	}
	return hr;
}

//-------------------------------------------------
// Read the device's state when in buffered mode
//-------------------------------------------------
HRESULT CKey::GetData(void)
{
	if(!m_lpDevice)
	{
		WriteLog(INFO_WARNING, "CKey::m_lpDevice==NULL");
		return -1;
	}
	
	DIDEVICEOBJECTDATA diod[BUFFERSIZE];
	DWORD dwItems = BUFFERSIZE;

	HRESULT hr = m_lpDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), diod, &dwItems, 0);
	if(hr!=DI_OK)		
	{
		hr = m_lpDevice->Acquire();
		while(hr == DIERR_INPUTLOST)
			hr = m_lpDevice->Acquire();

		if(hr == DIERR_OTHERAPPHASPRIO || hr == DIERR_NOTACQUIRED)
		{
		//	WriteLog(INFO_WARNING, "[CKey::GetData] Acquire Device Failed");
			return -1;
		}
		hr = m_lpDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), diod, &dwItems, 0);
		if(FAILED(hr))
		{
			WriteLog(INFO_WARNING, "[CKey::GetData] GetDeviceData Failed");
			return hr;
		}
	}
	
	if(SUCCEEDED(hr) && dwItems>0)
	{
		for(DWORD i=0; i<dwItems; i++)
		{
			if((diod[i].dwData & 0x80))
			{
				// Key Down
				m_BufferData[m_BufferEnd] = (UINT)(diod[i].dwOfs);
				m_BufferEnd++;
				if(m_BufferEnd >= BUFFERSIZE)
					m_BufferEnd = 0;
			}
			else
			{
				// Key Up
				m_BufferData[m_BufferEnd] = (UINT)(diod[i].dwOfs + MAXKEY);
				m_BufferEnd++;
				if(m_BufferEnd >= BUFFERSIZE) 
					m_BufferEnd = 0;
			}
		}
	}
	return hr;
}

bool CKey::IsKeyDown(unsigned char key)
{
	if(KEYDOWN(m_KeyState, key))
	{
		return true;
	}
	return false;
}

//-------------------------------------------------
// Set a key value
//-------------------------------------------------
void CKey::SetBufferKey(unsigned int key, bool bKeyDown)
{
	if(key<DIK_ESCAPE || key>0xED)
		return;

	if(bKeyDown)
	{
		m_BufferData[m_BufferEnd] = (UINT)key;
	}
	else
	{
		m_BufferData[m_BufferEnd] = (UINT)(key + MAXKEY);
	}
	
	m_BufferEnd++;
	if(m_BufferEnd >= BUFFERSIZE)
	m_BufferEnd = 0;
}

//----------------------------------------
//----------------------------------------
// The Implementation of CMouse
//----------------------------------------
//----------------------------------------
CMouse::CMouse()
{
	m_XPos = 0;
	m_YPos = 0;
	m_ZPos = 0;
	memset(MouseButton, 0, sizeof(MouseButton));
}

CMouse::~CMouse()
{
	ReleaseDevice();
}

BOOL CMouse::CreateDevice(HWND hWnd)
{
	HRESULT hr;
	HMODULE hInst = GetModuleHandle(NULL);
	if(g_lpDI==NULL)
	{
		hr = DirectInput8Create((HINSTANCE)hInst, DIRECTINPUT_VERSION,
		                    IID_IDirectInput8, (void**)&g_lpDI, NULL);
		if(FAILED(hr))
		{
			WriteLog(INFO_ERROR, "Create DirectInput8 Failed");
			return FALSE;
		}
	}
	
	hr = g_lpDI->CreateDevice(GUID_SysMouse, &m_lpDevice, NULL);
	if(FAILED(hr))
	{
		ReleaseDevice();
		WriteLog(INFO_ERROR, "Create Mouse Device Failed");
		return FALSE;
	}
	// Set the data format
	hr = m_lpDevice->SetDataFormat(&c_dfDIMouse); 
 
    if(FAILED(hr))
    { 
        ReleaseDevice();
		WriteLog(INFO_ERROR, "Set Mouse Data Format Failed");
        return FALSE; 
    } 
 
    // Set the cooperative level 
    hr = m_lpDevice->SetCooperativeLevel(hWnd, 
                             DISCL_FOREGROUND | DISCL_NONEXCLUSIVE); 
    if(FAILED(hr))
    { 
        ReleaseDevice();
		WriteLog(INFO_ERROR, "Set Mouse Cooperative Level Failed");
        return FALSE; 
    } 

	// Set property
	DIPROPDWORD property;
	property.diph.dwSize = sizeof(DIPROPDWORD);
	property.diph.dwHeaderSize = sizeof(DIPROPHEADER);
	property.diph.dwObj = 0;
	property.diph.dwHow = DIPH_DEVICE;
	property.dwData = BUFFERSIZE;

	hr = m_lpDevice->SetProperty(DIPROP_BUFFERSIZE, &property.diph);
	if(FAILED(hr))
	{
		ReleaseDevice();
		WriteLog(INFO_ERROR, "Set Mouse Buffer Size Failed");
		return FALSE; 
    }
	/*
	RECT rectWindow;
	if(GetWindowRect(hWnd, &rectWindow))
	{
		m_XPos = (rectWindow.left + rectWindow.right) / 2;
		m_YPos = (rectWindow.top + rectWindow.bottom) / 2;
	}
	else
	{
		m_XPos = 0;
		m_YPos = 0;
	}
	*/
 
    // Get access to the input device. 
/*    hr = m_lpDevice->Acquire(); 
    if(FAILED(hr))
    { 
        ReleaseDevice();
		WriteLog(INFO_ERROR, "Acquire Mouse Failed"); 
        return FALSE; 
    }*/

	return TRUE;
}

void CMouse::ReleaseDevice(void)
{
	if(m_lpDevice)
	{
		m_lpDevice->Unacquire();
		m_lpDevice->Release();
		m_lpDevice = NULL;
	}
}

//-------------------------------------------------
// Read the device's state when in immediate mode
//-------------------------------------------------
HRESULT CMouse::GetState(void)
{
	if(!m_lpDevice)
	{
		WriteLog(INFO_WARNING, "CMouse::m_lpDevice==NULL");
		return -1;
	}
	
	HRESULT hr;
	DIMOUSESTATE dims;
	ZeroMemory(&dims, sizeof(dims));
	hr = m_lpDevice->GetDeviceState(sizeof(dims), (LPVOID)&dims);
	if(FAILED(hr))
	{
		hr = m_lpDevice->Acquire();
		while(hr == DIERR_INPUTLOST)
			hr = m_lpDevice->Acquire();
		if(hr == DIERR_OTHERAPPHASPRIO || hr == DIERR_NOTACQUIRED)
		{
		//	WriteLog(INFO_ERROR, "CMouse::GetState Unacquired");
			return -1;
		}
		ZeroMemory(&dims, sizeof(dims));
		hr = m_lpDevice->GetDeviceState(sizeof(dims), (LPVOID)&dims);
	}
	if(SUCCEEDED(hr))
	{
		m_XPos = dims.lX;
		m_YPos = dims.lY;
		m_ZPos = dims.lZ;

		if(dims.rgbButtons[0] & 0x80)
			MouseButton[LBUTTON]=1;
		else 
			MouseButton[LBUTTON]=0;

		if(dims.rgbButtons[1] & 0x80)
			MouseButton[RBUTTON]=1;
		else 
			MouseButton[RBUTTON]=0;

		if(dims.rgbButtons[2] & 0x80)
			MouseButton[MBUTTON]=1;
		else 
			MouseButton[MBUTTON]=0;

		if(dims.rgbButtons[3] & 0x80)
			MouseButton[LRBUTTON]=1;
		else 
			MouseButton[LRBUTTON]=0;

		return hr;
	}
	else
	{
		WriteLog(INFO_WARNING, "CMouse::GetState Failed");
		return hr;
	}
}

//-------------------------------------------------
// Read the device's state when in buffered mode
//-------------------------------------------------
HRESULT CMouse::GetData(void)
{
	if(!m_lpDevice)
	{
		WriteLog(INFO_WARNING, "CMouse::m_lpDevice==NULL");
		return -1;
	}
	
	DIDEVICEOBJECTDATA diod[BUFFERSIZE];
	DWORD dwItems = BUFFERSIZE;

	HRESULT hr = m_lpDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), diod, &dwItems, 0);
	if(hr!=DI_OK)		
	{
		hr = m_lpDevice->Acquire();
		while(hr == DIERR_INPUTLOST)
			hr = m_lpDevice->Acquire();

		if(hr == DIERR_OTHERAPPHASPRIO || hr == DIERR_NOTACQUIRED)
		{
		//	WriteLog(INFO_WARNING, "[CMouse::GetData] Acquire Device Failed");
			return -1;
		}
		hr = m_lpDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), diod, &dwItems, 0);
		if(FAILED(hr))
		{
			WriteLog(INFO_WARNING, "[CMouse::GetData] GetDeviceData Failed");
			return hr;
		}
	}
	
	if(SUCCEEDED(hr) && dwItems>0)
	{
		for(DWORD i=0; i<dwItems; i++)
		{
			switch(diod[i].dwOfs)
			{
            case DIMOFS_BUTTON0:
				{
					if(diod[i].dwData & 0x80)
						m_BufferData[m_BufferEnd] = (UINT)LB_DOWN;
					else
						m_BufferData[m_BufferEnd] = (UINT)LB_UP;
				}
				break;
            case DIMOFS_BUTTON1:
				{
					if(diod[i].dwData & 0x80)
						m_BufferData[m_BufferEnd] = (UINT)RB_DOWN;
					else
						m_BufferData[m_BufferEnd] = (UINT)RB_UP;
				}
				break;
            case DIMOFS_BUTTON2:
				{
					if(diod[i].dwData & 0x80)
						m_BufferData[m_BufferEnd] = (UINT)MB_DOWN;
					else
						m_BufferData[m_BufferEnd] = (UINT)MB_UP;
				}
				break;
            case DIMOFS_BUTTON3:
            case DIMOFS_X:
            case DIMOFS_Y:
            case DIMOFS_Z:
				{
					continue;
				}
			}
			m_BufferEnd ++;
			if(m_BufferEnd >= BUFFERSIZE)
			{
				m_BufferEnd = 0;
			}
		}
	}
	return hr;
}

bool CMouse::IsKeyDown(unsigned char mouse)
{
	if(mouse>=MOUSEBUTTON)
	{
		WriteLog(INFO_WARNING, "[CMouse::IsKeyDown] wrong input");
		return false;
	}
	if(MouseButton[mouse])
	{
		return true;
	}
	return false;
}

//-------------------------------------------------
// Set a mouse button value
// bKeyDown not use
// 判斷key的范圍不合適
//-------------------------------------------------
void CMouse::SetBufferKey(unsigned int key, bool bKeyDown)
{
	if(key<1 || key>32)
		return;

	m_BufferData[m_BufferEnd] = (UINT)(key);
	
	m_BufferEnd++;
	if(m_BufferEnd >= BUFFERSIZE)
	m_BufferEnd = 0;
}

void CMouse::GetPointerOffset(long *x, long *y, long *z)
{
	*x = m_XPos;
	*y = m_YPos;
	*z = m_ZPos;
}

//-------------------------------------------------
// end of this file
//-------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区 二区 三区 久久精品| 26uuu国产在线精品一区二区| 欧美一区二区三区在线观看 | 免费看日韩精品| 成人av集中营| 精品国产伦理网| 亚洲一区二区av电影| 成人免费视频app| 日韩欧美资源站| 亚洲午夜精品久久久久久久久| 国产精品亚洲人在线观看| 91精品国产综合久久久蜜臀粉嫩 | 一本色道久久综合亚洲aⅴ蜜桃| 欧美不卡一区二区三区四区| 一级精品视频在线观看宜春院| 国产福利91精品| 久久综合精品国产一区二区三区| 五月天国产精品| 欧美专区日韩专区| 最新热久久免费视频| 成人一区二区三区视频| 欧美精品一区二区三区蜜桃视频| 日韩在线一区二区三区| 欧美日韩一区视频| 亚洲自拍都市欧美小说| 色就色 综合激情| 亚洲激情五月婷婷| 91片在线免费观看| 亚洲欧洲日产国码二区| 成人app网站| 18成人在线观看| 91亚洲精品久久久蜜桃| 自拍偷拍欧美精品| 日本道免费精品一区二区三区| 亚洲欧洲精品天堂一级| heyzo一本久久综合| 国产精品区一区二区三区| 国产精品一区在线观看你懂的| 精品国产伦一区二区三区观看方式 | 一区二区三区精密机械公司| 国产老肥熟一区二区三区| 欧美va亚洲va| 国产一区二区在线观看免费| 欧美精品一区二区三区蜜桃| 91老师片黄在线观看| 日韩一区中文字幕| 欧美影院精品一区| 日韩专区欧美专区| 26uuu国产在线精品一区二区| 盗摄精品av一区二区三区| 国产精品乱人伦| 欧美在线你懂得| 久久99精品久久久久婷婷| 国产日韩一级二级三级| 色婷婷综合五月| 图片区小说区区亚洲影院| 日韩精品专区在线影院观看| 国产一区二区福利| 亚洲精品第一国产综合野| 欧美日韩国产精品成人| 久久99国产精品麻豆| 欧美激情在线一区二区| 在线看国产一区二区| 香蕉影视欧美成人| 国产女人aaa级久久久级| 在线观看一区二区精品视频| 久久精品国产色蜜蜜麻豆| 中文字幕第一区二区| 欧美日韩电影一区| 高清在线不卡av| 午夜一区二区三区视频| 国产三级精品三级| 在线电影一区二区三区| 国产精品亚洲一区二区三区妖精| 一区二区在线看| 久久久久久久久久久久久久久99| 在线观看不卡视频| 国内一区二区在线| 亚洲国产中文字幕| 国产精品久久久99| 欧美大片日本大片免费观看| 日本韩国一区二区三区视频| 国内精品写真在线观看| 天堂成人国产精品一区| 成人免费视频在线观看| 久久久久久久国产精品影院| 在线不卡中文字幕播放| 91免费版在线看| 国产宾馆实践打屁股91| 久久99日本精品| 天天射综合影视| 亚洲资源在线观看| 亚洲欧洲精品成人久久奇米网| 精品99一区二区| 91精品国产综合久久精品| 日本高清无吗v一区| 白白色亚洲国产精品| 国产一区二区三区四| 蜜臀va亚洲va欧美va天堂| 亚洲v日本v欧美v久久精品| 一区二区视频在线| 最新中文字幕一区二区三区| 欧美激情综合在线| 久久亚洲欧美国产精品乐播 | 日韩黄色一级片| 一区二区三区精品视频| 亚洲欧美国产毛片在线| 中文字幕五月欧美| 国产精品拍天天在线| 国产人久久人人人人爽| 国产欧美久久久精品影院| 久久噜噜亚洲综合| 精品国精品自拍自在线| 精品处破学生在线二十三| 精品国产免费人成电影在线观看四季 | 欧美老肥妇做.爰bbww视频| 色激情天天射综合网| 色婷婷综合久久久中文一区二区| 国产激情偷乱视频一区二区三区| 国产剧情一区在线| 国产一区视频网站| 国产不卡免费视频| 色综合网色综合| 在线观看免费一区| 欧美综合一区二区三区| 欧美日韩成人综合天天影院| 4438x亚洲最大成人网| 欧美一区二区三区四区高清 | 国产精品免费人成网站| 国产精品久久777777| 综合亚洲深深色噜噜狠狠网站| 136国产福利精品导航| 一区二区在线电影| 日本中文在线一区| 国内不卡的二区三区中文字幕| 国产精品一区二区果冻传媒| 成人av影视在线观看| 在线免费一区三区| 欧美一级高清片| 中文字幕欧美三区| 亚洲一区二区欧美激情| 精品一区二区三区av| 成人午夜av影视| 欧美精选午夜久久久乱码6080| 欧美电影免费观看完整版| 中文字幕欧美国产| 丝袜亚洲另类丝袜在线| 国产精品综合久久| 91久久精品午夜一区二区| 欧美成人伊人久久综合网| 中文字幕国产一区二区| 日韩高清欧美激情| 国产xxx精品视频大全| 欧美日韩国产免费一区二区 | 亚洲香肠在线观看| 国产精品自拍av| 欧美三区免费完整视频在线观看| 日韩午夜在线影院| 亚洲天堂2014| 紧缚捆绑精品一区二区| 在线视频国内一区二区| 国产清纯在线一区二区www| 亚洲成人你懂的| jizz一区二区| 欧美精品一区二区三| 亚洲综合成人在线| 国产凹凸在线观看一区二区| 91精品在线一区二区| 一区二区三区欧美日韩| 国产精品一区二区不卡| 日韩欧美一区二区视频| 悠悠色在线精品| 国产精品亚洲视频| 欧美成人aa大片| 亚洲成a人片综合在线| 91麻豆高清视频| 欧美国产精品中文字幕| 国内精品在线播放| 日韩欧美一区在线| 亚洲国产精品自拍| 成人黄动漫网站免费app| 亚洲一区二区三区四区不卡 | 毛片av一区二区| 欧美日韩成人在线| 亚洲色图.com| 成人性生交大片免费看视频在线 | 欧洲日韩一区二区三区| 中文字幕精品一区| 粉嫩13p一区二区三区| 久久精品亚洲精品国产欧美| 久久国产精品色婷婷| 日韩一级二级三级精品视频| 午夜精品123| 欧美日韩成人在线| 日韩激情在线观看| 91精品国产综合久久福利软件| 亚州成人在线电影| 91精品国产黑色紧身裤美女| 日韩精品国产欧美| 日韩欧美三级在线|