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

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

?? apexcommctl.cpp

?? 提供串口通訊參數設置接口
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
///////////////////////////////////////////////////////////////
// 文件: ApexCommCtl.cpp
// 功能: 控件功能實現文件,實現控件屬性的改變和方法的功能
// 作者: 王念峰
// 日期: 1999.04.19 - 創建
//       1999.05.15 - 修改,整理
// E_mai:wnf@wisepeak.com
// Http://www.wisepeak.com
///////////////////////////////////////////////////////////////
// 版本: 1.0
///////////////////////////////////////////////////////////////
// 注:由于涉及串口通訊,要求系統必須同時響應串口事件和用戶輸入,
//    所以該處使用多線程來實現
///////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ApexComm.h"
#include "ApexCommCtl.h"
#include "vcthread.h"

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


IMPLEMENT_DYNCREATE(CApexCommCtrl, COleControl)


/////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CApexCommCtrl, COleControl)
	//{{AFX_MSG_MAP(CApexCommCtrl)
	ON_WM_WINDOWPOSCHANGING()
	//}}AFX_MSG_MAP
   
   //自定義消息映射,包括串口讀到數據事件,串口掛起事件
   //                接收數據出錯事件,數據傳輸完畢事件
   afx_msg ON_THREAD_MESSAGE(USER_RECEIVEDATA,ReceiveData)
   afx_msg ON_THREAD_MESSAGE(USER_ONCOMMHANGUP,CommHangup)
   afx_msg ON_THREAD_MESSAGE(USER_RECEIVEDATAERROR,ReceiveDataError)
   afx_msg ON_THREAD_MESSAGE(USER_DATASENDFINISHED,DataSendFinished)

END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
BEGIN_DISPATCH_MAP(CApexCommCtrl, COleControl)
	//{{AFX_DISPATCH_MAP(CApexCommCtrl)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "PortID", m_portID, OnPortIDChanged, VT_BSTR)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "BaudRate", m_baudRate, OnBaudRateChanged, VT_I4)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "EnableParity", m_enableParity, OnEnableParityChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "OutxCtsFlow", m_outxCtsFlow, OnOutxCtsFlowChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "OutxDsrFlow", m_outxDsrFlow, OnOutxDsrFlowChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "DtrControl", m_dtrControl, OnDtrControlChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "DsrSensitivity", m_dsrSensitivity, OnDsrSensitivityChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "TxContinueOnXoff", m_txContinueOnXoff, OnTxContinueOnXoffChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "OutxXonXoffFlow", m_outxXonXoffFlow, OnOutxXonXoffFlowChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "InxXonXoffFlow", m_inxXonXoffFlow, OnInxXonXoffFlowChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "ReplaceWhenParityError", m_replaceWhenParityError, OnReplaceWhenParityErrorChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "IgnoreNullChar", m_ignoreNullChar, OnIgnoreNullCharChanged, VT_BOOL)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "RtsControl", m_rtsControl, OnRtsControlChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "XonLimit", m_xonLimit, OnXonLimitChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "XoffLimit", m_xoffLimit, OnXoffLimitChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "ByteSize", m_byteSize, OnByteSizeChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "Parity", m_parity, OnParityChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "StopBits", m_stopBits, OnStopBitsChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "XonChar", m_xonChar, OnXonCharChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "XoffChar", m_xoffChar, OnXoffCharChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "ReplaceChar", m_replaceChar, OnReplacedCharChanged, VT_I2)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "InputBufferSize", m_inputBufferSize, OnInputBufferSizeChanged, VT_I4)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "OutputBufferSize", m_outputBufferSize, OnOutputBufferSizeChanged, VT_I4)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "ReadIntervalTimeout", m_readIntervalTimeout, OnReadIntervalTimeoutChanged, VT_I4)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "ReadTotalTimeoutMultiplier", m_readTotalTimeoutMultiplier, OnReadTotalTimeoutMultiplierChanged, VT_I4)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "ReadTotalTimeoutConstant", m_readTotalTimeoutConstant, OnReadTotalTimeoutConstantChanged, VT_I4)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "WriteTotalTimeoutMultiplier", m_writeTotalTimeoutMultiplier, OnWriteTotalTimeoutMultiplierChanged, VT_I4)
	DISP_PROPERTY_NOTIFY(CApexCommCtrl, "WriteTotalTimeoutConstant", m_writeTotalTimeoutConstant, OnWriteTotalTimeoutConstantChanged, VT_I4)
	DISP_FUNCTION(CApexCommCtrl, "OpenPort", OpenPort, VT_EMPTY, VTS_NONE)
	DISP_FUNCTION(CApexCommCtrl, "ClosePort", ClosePort, VT_EMPTY, VTS_NONE)
	DISP_FUNCTION(CApexCommCtrl, "WritePort", WritePort, VT_BOOL, VTS_BSTR VTS_I4)
	//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()


/////////////////////////////////////////////////////////////////////////////
BEGIN_EVENT_MAP(CApexCommCtrl, COleControl)
	//{{AFX_EVENT_MAP(CApexCommCtrl)
	EVENT_CUSTOM("OnReceiveData", FireOnReceiveData, VTS_BSTR  VTS_I4)
	EVENT_CUSTOM("OnCommHangup", FireOnCommHangup, VTS_BOOL)
	EVENT_CUSTOM("ReceiveDateError", FireReceiveDateError, VTS_I4)
	EVENT_CUSTOM("DataSendFinished", FireDataSendFinished, VTS_NONE)
	//}}AFX_EVENT_MAP
END_EVENT_MAP()

/////////////////////////////////////////////////////////////////////////////
//由此向下不要修改,由系統維護
IMPLEMENT_OLECREATE_EX(CApexCommCtrl, "APEXCOMM.ApexCommCtrl.1",
	0xf0a2bec8, 0xf8b2, 0x11d2, 0x8a, 0x54, 0, 0x80, 0xc8, 0xeb, 0x2f, 0xfe)

/////////////////////////////////////////////////////////////////////////////
IMPLEMENT_OLETYPELIB(CApexCommCtrl, _tlid, _wVerMajor, _wVerMinor)

/////////////////////////////////////////////////////////////////////////////
const IID BASED_CODE IID_DApexComm =
		{ 0xf0a2bec6, 0xf8b2, 0x11d2, { 0x8a, 0x54, 0, 0x80, 0xc8, 0xeb, 0x2f, 0xfe } };
const IID BASED_CODE IID_DApexCommEvents =
		{ 0xf0a2bec7, 0xf8b2, 0x11d2, { 0x8a, 0x54, 0, 0x80, 0xc8, 0xeb, 0x2f, 0xfe } };

/////////////////////////////////////////////////////////////////////////////
static const DWORD BASED_CODE _dwApexCommOleMisc =
	OLEMISC_ACTIVATEWHENVISIBLE |
	OLEMISC_SETCLIENTSITEFIRST |
	OLEMISC_INSIDEOUT |
	OLEMISC_CANTLINKINSIDE;// |
   //OLEMISC_INVISIBLEATRUNTIME;
	//OLEMISC_RECOMPOSEONRESIZE;

IMPLEMENT_OLECTLTYPE(CApexCommCtrl, IDS_APEXCOMM, _dwApexCommOleMisc)

/////////////////////////////////////////////////////////////////////////////
// CApexCommCtrl::CApexCommCtrlFactory::UpdateRegistry -
BOOL CApexCommCtrl::CApexCommCtrlFactory::UpdateRegistry(BOOL bRegister)
{
	// TODO: Verify that your control follows apartment-model threading rules.
	// Refer to MFC TechNote 64 for more information.
	// If your control does not conform to the apartment-model rules, then
	// you must modify the code below, changing the 6th parameter from
	// afxRegApartmentThreading to 0.

	if (bRegister)
		return AfxOleRegisterControlClass(
			AfxGetInstanceHandle(),
			m_clsid,
			m_lpszProgID,
			IDS_APEXCOMM,
			IDB_APEXCOMM,
			afxRegApartmentThreading,
			_dwApexCommOleMisc,
			_tlid,
			_wVerMajor,
			_wVerMinor);
	else
		return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}
//以上代碼不必修改
////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////
//構造函數
CApexCommCtrl::CApexCommCtrl()
{
	InitializeIIDs(&IID_DApexComm, &IID_DApexCommEvents);
   SetInitialSize(24,24);//設置控件初始大小

   m_portID="COM1";
   m_hCommFile=NULL;
   m_bSendDataEmpty=true;
}


/////////////////////////////////////////////////////////////////////////////
CApexCommCtrl::~CApexCommCtrl()
{
	// TODO: Cleanup your control's instance data here.
}

/////////////////////////////////////////////////////////////////////////////
//顯示設計狀態下的控件外觀
/////////////////////////////////////////////////////////////////////////////
void CApexCommCtrl::OnDraw(
			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
	CBitmap bitmap;
	BITMAP  bmp;
	CPictureHolder picHolder;
	CRect rcSrcBounds;

	//裝入位圖
	bitmap.LoadBitmap(IDB_APEX);
	bitmap.GetObject(sizeof(BITMAP), &bmp);
	rcSrcBounds.right = bmp.bmWidth;
	rcSrcBounds.bottom = bmp.bmHeight;

	//創建位圖并拉伸
	picHolder.CreateFromBitmap((HBITMAP)bitmap.m_hObject, NULL, false);
	picHolder.Render(pdc, rcBounds, rcSrcBounds);
}

/////////////////////////////////////////////////////////////////////////////
void CApexCommCtrl::DoPropExchange(CPropExchange* pPX)
{
	ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
	COleControl::DoPropExchange(pPX);

	PX_Long(pPX, _T("BaudRate"), m_baudRate, 9600);
   PX_Bool(pPX, _T("EnableParity"), m_enableParity, FALSE);
   PX_Bool(pPX, _T("OutxCtsFlow"), m_outxCtsFlow, FALSE);
   PX_Bool(pPX, _T("OutxDsrFlow"), m_outxDsrFlow, FALSE);
   PX_Short(pPX, _T("DtrControl"), m_dtrControl, 0);
   PX_Bool(pPX, _T("DsrSensitivity"), m_dsrSensitivity, FALSE);
   PX_Bool(pPX, _T("TxContinueOnXoff"), m_txContinueOnXoff, TRUE);
   PX_Bool(pPX, _T("OutxXonXoffFlow"), m_outxXonXoffFlow, FALSE);
   PX_Bool(pPX, _T("InxXonXoffFlow"), m_inxXonXoffFlow, FALSE);
   PX_Bool(pPX, _T("ReplaceWhenParityError"), m_replaceWhenParityError, FALSE);
   PX_Bool(pPX, _T("IgnoreNullChar"), m_ignoreNullChar, FALSE);
   PX_Short(pPX, _T("RtsControl"), m_rtsControl, 0);
   PX_Short(pPX, _T("XonLimit"), m_xonLimit, 200);
   PX_Short(pPX, _T("XoffLimit"), m_xoffLimit, 200);
   PX_Short(pPX, _T("ByteSize"), m_byteSize, 3);
   PX_Short(pPX, _T("Parity"), m_parity, 0);
   PX_Short(pPX, _T("StopBits"), m_stopBits, 0);
   PX_Short(pPX, _T("XonChar"), m_xonChar, 17);
   PX_Short(pPX, _T("XoffChar"), m_xoffChar, 19);
   PX_Short(pPX, _T("ReplaceChar"), m_replaceChar, 63);
   PX_Long(pPX, _T("InputBufferSize"), m_inputBufferSize, 2048);
   PX_Long(pPX, _T("OutputBufferSize"), m_outputBufferSize, 1024);
   PX_Long(pPX, _T("ReadIntervalTimeout"), m_readIntervalTimeout, 100);
   PX_Long(pPX, _T("ReadTotalTimeoutMultiplier"), m_readTotalTimeoutMultiplier, 0);
   PX_Long(pPX, _T("ReadTotalTimeoutConstant"), m_readTotalTimeoutConstant, 0);
   PX_Long(pPX, _T("WriteTotalTimeoutMultiplier"), m_writeTotalTimeoutMultiplier, 0);
   PX_Long(pPX, _T("WriteTotalTimeoutConstant"), m_writeTotalTimeoutConstant, 0);
	// TODO: Call PX_ functions for each persistent custom property.
}


/////////////////////////////////////////////////////////////////////////////
void CApexCommCtrl::OnResetState()
{
	COleControl::OnResetState();  // Resets defaults found in DoPropExchange
}


/////////////////////////////////////////////////////////////////////////////
//改變控件的屬性
/////////////////////////////////////////////////////////////////////////////
void CApexCommCtrl::OnPortIDChanged() 
{
   if (m_hCommFile != NULL) return;
	SetModifiedFlag();
}

void CApexCommCtrl::OnBaudRateChanged() 
{
   if (m_baudRate<110) m_baudRate=110;

   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnEnableParityChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

   SetModifiedFlag();
}

void CApexCommCtrl::OnOutxCtsFlowChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnOutxDsrFlowChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnDtrControlChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnDsrSensitivityChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnTxContinueOnXoffChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnOutxXonXoffFlowChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnInxXonXoffFlowChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

   SetModifiedFlag();
}

void CApexCommCtrl::OnReplaceWhenParityErrorChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnIgnoreNullCharChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnRtsControlChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnXonLimitChanged() 
{
   if (m_xonLimit<=0) 
      m_xonLimit=1;
   else
      if (m_xonLimit>m_outputBufferSize) m_xonLimit=(short) m_outputBufferSize;

   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnXoffLimitChanged() 
{
   if (m_xoffLimit<= 0) 
      m_xoffLimit=1;
   else
      if (m_xoffLimit>m_inputBufferSize) m_xoffLimit=(short)m_inputBufferSize;
   
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnByteSizeChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnParityChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnStopBitsChanged() 
{
   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnXonCharChanged() 
{
   if (m_xonChar<0 || m_xonChar>127) m_xoffChar=17;

   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnXoffCharChanged() 
{
   if (m_xoffChar<0 || m_xoffChar>127) m_xoffChar=19;

   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnReplacedCharChanged() 
{
   if (m_replaceChar<0 || m_replaceChar>127) m_replaceChar=63;

   if (m_hCommFile != NULL) SetPortState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnInputBufferSizeChanged() 
{
   if (m_inputBufferSize<128)  m_inputBufferSize=128;
      
   if (m_xoffLimit>m_inputBufferSize) m_xoffLimit=(short)m_inputBufferSize;

   if (m_hCommFile != NULL)
      if (SetupComm(m_hCommFile, m_inputBufferSize, m_outputBufferSize))
     	   SetModifiedFlag();
}

void CApexCommCtrl::OnOutputBufferSizeChanged() 
{
   if (m_outputBufferSize<128)  m_outputBufferSize=128;
      
   if (m_xonLimit>m_outputBufferSize) m_xonLimit=(short)m_outputBufferSize;

   if (m_hCommFile != NULL)
      if (SetupComm(m_hCommFile, m_inputBufferSize, m_outputBufferSize))
     	   SetModifiedFlag();
}

void CApexCommCtrl::OnReadIntervalTimeoutChanged() 
{
   if (m_readIntervalTimeout<0) m_readIntervalTimeout=0; 

   if (m_hCommFile != NULL) SetCommTimeState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnReadTotalTimeoutMultiplierChanged() 
{
   if (m_readTotalTimeoutMultiplier<0) m_readTotalTimeoutMultiplier=0; 

   if (m_hCommFile != NULL) SetCommTimeState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnReadTotalTimeoutConstantChanged() 
{
   if (m_readTotalTimeoutConstant<0) m_readTotalTimeoutConstant=0; 

   if (m_hCommFile != NULL) SetCommTimeState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnWriteTotalTimeoutMultiplierChanged() 
{
   if (m_writeTotalTimeoutMultiplier<0) m_writeTotalTimeoutMultiplier=0; 

   if (m_hCommFile != NULL) SetCommTimeState();

	SetModifiedFlag();
}

void CApexCommCtrl::OnWriteTotalTimeoutConstantChanged() 
{
   if (m_writeTotalTimeoutConstant<0) m_writeTotalTimeoutConstant=0; 

   if (m_hCommFile != NULL) SetCommTimeState();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱人伦精品一区二区在线观看| 91丨porny丨国产入口| 国产成人综合亚洲网站| 91精品福利在线| 久久久久久一二三区| 亚洲一区二区三区不卡国产欧美| 久久99久久精品| 欧美色爱综合网| 综合激情网...| 国产精品伊人色| 日韩欧美在线综合网| 亚洲人精品午夜| zzijzzij亚洲日本少妇熟睡| 欧美成人video| 全部av―极品视觉盛宴亚洲| 色悠久久久久综合欧美99| 亚洲国产成人在线| 狠狠色狠狠色综合日日91app| 欧美伦理电影网| 亚洲一区电影777| 色综合久久久久综合体桃花网| 国产清纯在线一区二区www| 免费成人美女在线观看| 欧美精品久久一区二区三区| 亚洲一区二区三区自拍| 91国产精品成人| 亚洲精品老司机| 色婷婷综合久久久久中文一区二区| 日本一区二区三区久久久久久久久不 | 蜜臀av一级做a爰片久久| 精品一区在线看| 欧美少妇xxx| 精品国产三级电影在线观看| 99久久精品国产精品久久 | 亚洲国产成人在线| 日本高清不卡视频| 国产一区二区女| 亚洲国产精品一区二区www在线| 精品国产精品一区二区夜夜嗨| 色综合中文综合网| 国产欧美日本一区视频| 精品视频一区二区三区免费| 国产精品99久久久久久久女警 | 成人教育av在线| 日韩高清在线一区| 亚洲男人的天堂在线aⅴ视频| 日韩美女主播在线视频一区二区三区| www.亚洲精品| 国内精品第一页| 午夜在线成人av| 亚洲乱码日产精品bd| 国产日韩精品一区二区浪潮av| 欧美日韩激情在线| 日本韩国一区二区| 成人黄色a**站在线观看| 国内精品在线播放| 日本视频一区二区三区| 亚洲午夜免费视频| 亚洲视频精选在线| 国产拍揄自揄精品视频麻豆| 777久久久精品| 欧美在线一区二区三区| 99精品桃花视频在线观看| 国产成人免费xxxxxxxx| 激情av综合网| 久久99热这里只有精品| 蜜臀av一区二区在线免费观看 | 免费观看成人av| 喷白浆一区二区| 男女男精品视频网| 日本在线不卡一区| 日韩成人一区二区三区在线观看| 亚洲一区二区三区不卡国产欧美| 一区二区三区在线播| 亚洲欧洲三级电影| 亚洲欧美区自拍先锋| 中文字幕日本乱码精品影院| 国产精品视频在线看| 国产亚洲精品7777| 中文字幕精品在线不卡| 中日韩av电影| 国产精品卡一卡二| 中文字幕一区二区在线观看| ㊣最新国产の精品bt伙计久久| 国产精品免费免费| 亚洲视频 欧洲视频| 一区二区三区不卡在线观看 | 日韩一级成人av| 日韩欧美激情四射| 久久久久久黄色| 国产精品人妖ts系列视频| 国产欧美视频一区二区三区| 欧美国产日韩a欧美在线观看| 国产精品理论片在线观看| 亚洲免费在线观看| 亚洲第一会所有码转帖| 另类小说综合欧美亚洲| 国产精品夜夜爽| 99re视频这里只有精品| 在线观看一区不卡| 日韩欧美在线影院| 国产精品丝袜在线| 亚洲伊人伊色伊影伊综合网| 日av在线不卡| 风流少妇一区二区| 欧美综合色免费| 欧美大片一区二区三区| 国产精品免费av| 亚洲成人av资源| 国产乱人伦偷精品视频免下载| 99这里只有久久精品视频| 欧美视频在线一区| 久久久久久久一区| 尤物视频一区二区| 九九九久久久精品| 99国产欧美另类久久久精品| 欧美久久久久久久久中文字幕| 欧美电影精品一区二区| 亚洲欧洲一区二区三区| 免费在线观看日韩欧美| va亚洲va日韩不卡在线观看| 欧美日韩一区不卡| 国产情人综合久久777777| 亚洲小说春色综合另类电影| 国产电影精品久久禁18| 欧美三日本三级三级在线播放| 久久久www免费人成精品| 亚洲国产美女搞黄色| 国产91精品免费| 日韩欧美激情一区| 夜夜操天天操亚洲| 从欧美一区二区三区| 欧美一卡二卡三卡| 伊人婷婷欧美激情| 丁香婷婷综合激情五月色| 欧美日本一区二区| 亚洲免费看黄网站| 风间由美一区二区av101| 欧美丰满少妇xxxbbb| 亚洲蜜臀av乱码久久精品| 欧美中文字幕不卡| 国产欧美精品一区aⅴ影院| 青草av.久久免费一区| 欧洲一区二区三区在线| 国产精品三级在线观看| 久久99深爱久久99精品| 欧美精品一级二级三级| 一区二区三区在线观看欧美| 成人激情电影免费在线观看| 精品成人免费观看| 美女性感视频久久| 欧美一区二区在线视频| 亚洲狠狠爱一区二区三区| 91小视频在线免费看| 欧美韩国日本一区| 国产乱码精品一区二区三区五月婷| 欧美一级电影网站| 丝瓜av网站精品一区二区| 色悠久久久久综合欧美99| 综合亚洲深深色噜噜狠狠网站| 国产成人免费视频一区| 国产亚洲欧美色| 国产福利一区在线| 国产午夜精品美女毛片视频| 国产一区二区三区蝌蚪| 精品成a人在线观看| 国产最新精品免费| 日韩欧美中文字幕精品| 九九国产精品视频| 日韩欧美不卡在线观看视频| 奇米精品一区二区三区在线观看一| 欧美精品久久一区二区三区| 日日夜夜免费精品视频| 欧美肥妇free| 麻豆精品在线视频| 亚洲精品在线观看视频| 国产一区二区电影| 国产精品免费久久| 91久久人澡人人添人人爽欧美| 一区二区三区在线视频观看58| 在线观看视频91| 三级一区在线视频先锋| 精品国产一区a| 国产成人无遮挡在线视频| 国产精品久久久久影视| 日本精品免费观看高清观看| 天堂资源在线中文精品| 欧美电影免费观看高清完整版| 国产精品中文有码| 专区另类欧美日韩| 欧美日韩精品免费| 久久av老司机精品网站导航| 日本一区二区三区视频视频| 日本韩国一区二区三区视频| 日韩国产成人精品| 欧美国产精品一区| 欧美中文字幕久久| 国产麻豆精品视频| 一区二区在线免费| 日韩一区二区三区免费观看|