青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

數(shù)CRichEditCtrl的先天不足及進(jìn)化方法

  1. 不能夠自動(dòng)初始化
  2. 不能夠接受TAB鍵
  3. 不能夠通過(guò)屬性設(shè)置自動(dòng)換行
  4. 不能顯示圖片等其他OLE對(duì)象
  5. 不能夠使用Ctrl+C來(lái)實(shí)現(xiàn)拷貝

不能夠自動(dòng)初始化

當(dāng)我第一次將Rich Edit控件放在資源窗體上的時(shí)候,發(fā)現(xiàn)程序根本就不能運(yùn)行。后來(lái)才找到原因,原來(lái)Rich Edit 控件是Ole類(lèi)型的控件。在加載Rich Edit 控件的時(shí)候,必須進(jìn)行初始化。代碼如下:
BOOLCTestApp::InitInstance(){

          .....
          AfxInitRichEdit();

}

 不能夠接受TAB鍵

將 RichEdit控件放到資源窗體上的時(shí)候,發(fā)現(xiàn)它的屬性頁(yè)中并沒(méi)有設(shè)置接受TAB鍵的設(shè)置,導(dǎo)致當(dāng)把焦點(diǎn)放到Rich Edit 控件上的時(shí)候,一按tab鍵,焦點(diǎn)就移動(dòng)到下一個(gè)控件上面去了。
具體解決方法就是重載Rich Edit控件的OnGetDlgCode:
例子代碼:
.h文件:
class CMyRichEdit : public CRichEditCtrl{

          ........
          afx_msg UINT OnGetDlgCode( );
          ........

}
.cpp文件:
BEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl)
          ON_WM_GETDLGCODE( )
END_MESSAGE_MAP()


UINT COleRichEditCtrl::OnGetDlgCode( ){

          return DLGC_WANTTAB;


}

 不能夠通過(guò)屬性設(shè)置自動(dòng)換行

當(dāng)把Rich Edit控件放到資源窗體上的時(shí)候,發(fā)現(xiàn)在它的屬性窗體中并沒(méi)有設(shè)置Rich Edit控件自動(dòng)換行的屬性設(shè)置。要達(dá)到這一目的,例子代碼如下:
BOOL CTestDlg::InitDialog(){

          .............
          //m_RichEdit為窗體類(lèi)的成員變量
          this->m_RichEdit.SetTargetDevice(NULL,0);
          ............

}

不能顯示圖片等其他OLE對(duì)象

MFC提供的CRichEditCtrl沒(méi)有提供直接顯示圖片等OLE對(duì)象的屬性或方法設(shè)置,但是提供了一個(gè)接口SetOLECallback( IRichEditOleCallback* pCallback );
要讓CRichEditCtrl顯示圖片,就得在IRichEditOleCallback上下功夫。
IRichEditOleCallback是windows中的接口,它的定義如下:
ContextSensitiveHelp:
    通過(guò)該方法通知應(yīng)用程序它將以上下文關(guān)聯(lián)方式調(diào)度幫助。
DeleteObject:
    通過(guò)該方法發(fā)出通知:一個(gè)對(duì)象即將從RichEdit控件中刪除
GetClipboardData:
    通過(guò)該方法允許RichEdit的客戶端(調(diào)用程序)提供自己的粘貼對(duì)象
GetContextMenu:
    通過(guò)該方法向應(yīng)用程序提出通過(guò)鼠標(biāo)右鍵事件來(lái)獲取上下文菜單的請(qǐng)求
GetDragDropEffect:
    通過(guò)該方法允許RichEdit的客戶端(調(diào)用程序)設(shè)置拖動(dòng)操作的效果
GetInPlaceContext:
    通過(guò)該方法提供了應(yīng)用程序級(jí)和文檔級(jí)接口,以及必要的支持In-place激活的信息
GetNewStrorage:
    通過(guò)該方法存儲(chǔ)從粘貼板或超文本流(RTF)中讀取的新對(duì)象
QueryAcceptData:
    通過(guò)該方法決定在粘貼操作或拖放操作中引入的數(shù)據(jù)是否可以被接受。
QueryInsertObject:
    通過(guò)該方法向應(yīng)用程序詢問(wèn)某個(gè)對(duì)象是否可以被插入
ShowContainerUI:
   
通過(guò)該方法告知應(yīng)用程序是否顯示自己的操作界面

大致了解了IRichEditOleCallback接口后,就應(yīng)該清楚,要顯示圖片等ole對(duì)象,至少應(yīng)該實(shí)現(xiàn)GetNewStorage方法,因?yàn)樵摲椒ㄊ谴鎯?chǔ)ole對(duì)象的接口方法。

以下是接口聲明的代碼:
interface IExRichEditOleCallback : IRichEditOleCallback
{

public:
  IExRichEditOleCallback();
  virtual ~IExRichEditOleCallback();
  int m_iNumStorages;
  IStorage* pStorage;
  DWORD m_dwRef;

  virtual HRESULT STDMETHODCALLTYPE GetNewStorage(LPSTORAGE* lplpstg);
  virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);
  virtual ULONG STDMETHODCALLTYPE AddRef();
  virtual ULONG STDMETHODCALLTYPE Release();
  virtual HRESULT STDMETHODCALLTYPE GetInPlaceContext(LPOLEINPLACEFRAME FAR *lplpFrame,
   LPOLEINPLACEUIWINDOW FAR *lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
  virtual HRESULT STDMETHODCALLTYPE ShowContainerUI(BOOL fShow);
  virtual HRESULT STDMETHODCALLTYPE QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp);
  virtual HRESULT STDMETHODCALLTYPE DeleteObject(LPOLEOBJECT lpoleobj);
  virtual HRESULT STDMETHODCALLTYPE QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT FAR *lpcfFormat,   DWORD reco, BOOL fReally, HGLOBAL hMetaPict);
  virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
  virtual HRESULT STDMETHODCALLTYPE GetClipboardData(CHARRANGE FAR *lpchrg, DWORD reco, LPDATAOBJECT FAR *lplpdataobj);
   virtual HRESULT STDMETHODCALLTYPE GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect);
  virtual HRESULT STDMETHODCALLTYPE GetContextMenu(WORD seltyp, LPOLEOBJECT lpoleobj, CHARRANGE FAR *lpchrg,   HMENU FAR *lphmenu);

}
關(guān)于接口的實(shí)現(xiàn),將被附在最后的附錄中。


不能夠使用Ctrl+C來(lái)實(shí)現(xiàn)拷貝

實(shí)際上,CRichEditCtrl本身是支持Ctrl+C實(shí)現(xiàn)拷貝功能的,但是當(dāng)我在CRichiEditCtrl的繼承類(lèi)中使用了IRichiEditCallback接口后,它就不在支持Ctrl+C實(shí)現(xiàn)拷貝功能了。我想問(wèn)題就出在IRichEditCallback接口上。
仔細(xì)看了一遍它的幫助文檔,我發(fā)現(xiàn)問(wèn)題就出在GetClipboardData上,我沒(méi)有在它的實(shí)現(xiàn)方法中寫(xiě)代碼,只是返回了S_OK,如果要處理Ctrl+C,就必須返回E_NOTIMPL。

以上是我近幾天的開(kāi)發(fā)經(jīng)歷,與大家分享,還希望路過(guò)的高手多多指教。
在以下關(guān)于RichEdit的代碼例子中,我參考了Mike O'Neill 的代碼,再次謝謝他的貢獻(xiàn)。

附錄
.h文件

 

#if  !defined(AFX_OLERICHEDITCTRL_H__3DFF15EE_7336_4297_9620_7F00B611DAA1__INCLUDED_)
#define  AFX_OLERICHEDITCTRL_H__3DFF15EE_7336_4297_9620_7F00B611DAA1__INCLUDED_

#if  _MSC_VER > 1000
#pragma once
#endif   //  _MSC_VER > 1000
//  OleRichEditCtrl.h : header file
//


#i nclude 
< richole.h >


/////////////////////////////////////////////////////////////////////////// //
//  COleRichEditCtrl window

class  COleRichEditCtrl :  public  CRichEditCtrl
{
//  Construction
public :
 COleRichEditCtrl();
 
virtual   ~ COleRichEditCtrl();

 
long  StreamInFromResource( int  iRes, LPCTSTR sType);



protected :
 
 
static  DWORD CALLBACK readFunction(DWORD dwCookie,
   LPBYTE lpBuf,   
//  the buffer to fill
   LONG nCount,    //  number of bytes to read
   LONG *  nRead);    //  number of bytes actually read

 
interface  IExRichEditOleCallback;  //  forward declaration (see below in this header file)

 IExRichEditOleCallback
*  m_pIRichEditOleCallback;
 BOOL m_bCallbackSet;
 
 
 
interface  IExRichEditOleCallback :  public  IRichEditOleCallback
 {
 
public :
  IExRichEditOleCallback();
  
virtual   ~ IExRichEditOleCallback();
  
int  m_iNumStorages;
  IStorage
*  pStorage;
  DWORD m_dwRef;

  
virtual  HRESULT STDMETHODCALLTYPE GetNewStorage(LPSTORAGE *  lplpstg);
  
virtual  HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid,  void   **  ppvObject);
  
virtual  ULONG STDMETHODCALLTYPE AddRef();
  
virtual  ULONG STDMETHODCALLTYPE Release();
  
virtual  HRESULT STDMETHODCALLTYPE GetInPlaceContext(LPOLEINPLACEFRAME FAR  * lplpFrame,
   LPOLEINPLACEUIWINDOW FAR 
* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
   
virtual  HRESULT STDMETHODCALLTYPE ShowContainerUI(BOOL fShow);
   
virtual  HRESULT STDMETHODCALLTYPE QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp);
   
virtual  HRESULT STDMETHODCALLTYPE DeleteObject(LPOLEOBJECT lpoleobj);
   
virtual  HRESULT STDMETHODCALLTYPE QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT FAR  * lpcfFormat,
   DWORD reco, BOOL fReally, HGLOBAL hMetaPict);
   
virtual  HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
   
virtual  HRESULT STDMETHODCALLTYPE GetClipboardData(CHARRANGE FAR  * lpchrg, DWORD reco, LPDATAOBJECT FAR  * lplpdataobj);
   
virtual  HRESULT STDMETHODCALLTYPE GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect);
   
virtual  HRESULT STDMETHODCALLTYPE GetContextMenu(WORD seltyp, LPOLEOBJECT lpoleobj, CHARRANGE FAR  * lpchrg,
   HMENU FAR 
* lphmenu);
 };
 

public :

//  Overrides
 
//  ClassWizard generated virtual function overrides
 
// {{AFX_VIRTUAL(COleRichEditCtrl)
  protected :
 
virtual   void  PreSubclassWindow();
 
// }}AFX_VIRTUAL

//  Implementation
public :


 
//  Generated message map functions
protected :
 
// {{AFX_MSG(COleRichEditCtrl)
 afx_msg  int  OnCreate(LPCREATESTRUCT lpCreateStruct);
 
 
// }}AFX_MSG
 afx_msg UINT OnGetDlgCode( );
 DECLARE_MESSAGE_MAP()
};

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

// {{AFX_INSERT_LOCATION}}
//  Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif   //  !defined(AFX_OLERICHEDITCTRL_H__3DFF15EE_7336_4297_9620_7F00B611DAA1__INCLUDED_)






.cpp文件

 

//  OleRichEditCtrl.cpp : implementation file
//

#i nclude 
" stdafx.h "
#i nclude 
" OleRichEditCtrl.h "

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

/////////////////////////////////////////////////////////////////////////// //
//  COleRichEditCtrl

COleRichEditCtrl::COleRichEditCtrl()
{
 m_bCallbackSet 
=  FALSE;
}

COleRichEditCtrl::
~ COleRichEditCtrl()
{
 
//  IExRichEditOleCallback class is a reference-counted class  
 
//  which deletes itself and for which delete should not be called

 
//  delete m_pIRichEditOleCallback;
}


BEGIN_MESSAGE_MAP(COleRichEditCtrl, CRichEditCtrl)
 
// {{AFX_MSG_MAP(COleRichEditCtrl)
 ON_WM_CREATE()
 
// }}AFX_MSG_MAP
 ON_WM_GETDLGCODE( )
END_MESSAGE_MAP()
//


int  COleRichEditCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
  
if  (CRichEditCtrl::OnCreate(lpCreateStruct)  ==   - 1 )
   
return   - 1 ;
  
 
//  m_pIRichEditOleCallback should have been created in PreSubclassWindow

  ASSERT( m_pIRichEditOleCallback 
!=  NULL ); 

 
//  set the IExRichEditOleCallback pointer if it wasn't set 
 
//  successfully in PreSubclassWindow

 
if  (  ! m_bCallbackSet )
 {
  SetOLECallback( m_pIRichEditOleCallback );
 }
  
  
return   0 ;
}

void  COleRichEditCtrl::PreSubclassWindow() 
{
 
//  base class first
 CRichEditCtrl::PreSubclassWindow(); 

 m_pIRichEditOleCallback 
=  NULL;
 m_pIRichEditOleCallback 
=   new  IExRichEditOleCallback;
 ASSERT( m_pIRichEditOleCallback 
!=  NULL );

 m_bCallbackSet 
=  SetOLECallback( m_pIRichEditOleCallback );
}


long  COleRichEditCtrl::StreamInFromResource( int  iRes, LPCTSTR sType)
{
 HINSTANCE hInst 
=  AfxGetInstanceHandle();
 HRSRC hRsrc 
=  ::FindResource(hInst,
  MAKEINTRESOURCE(iRes), sType);
 
 DWORD len 
=  SizeofResource(hInst, hRsrc); 
 BYTE
*  lpRsrc  =  (BYTE * )LoadResource(hInst, hRsrc); 
 ASSERT(lpRsrc); 
 
 CMemFile mfile;
 mfile.Attach(lpRsrc, len); 

 EDITSTREAM es;
 es.pfnCallback 
=  readFunction;
 es.dwError 
=   0 ;
 es.dwCookie 
=  (DWORD)  & mfile;

 
return  StreamIn( SF_RTF, es );
}


 

/*  static  */
DWORD CALLBACK COleRichEditCtrl::readFunction(DWORD dwCookie,
   LPBYTE lpBuf,   
//  the buffer to fill
   LONG nCount,    //  number of bytes to read
   LONG *  nRead)    //  number of bytes actually read
{
 CFile
*  fp  =  (CFile  * )dwCookie;
 
* nRead  =  fp -> Read(lpBuf,nCount);
 
return   0 ;
}

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


 

COleRichEditCtrl::IExRichEditOleCallback::IExRichEditOleCallback()
{
 pStorage 
=  NULL;
 m_iNumStorages 
=   0 ;
 m_dwRef 
=   0 ;

 
//  set up OLE storage

 HRESULT hResult 
=  ::StgCreateDocfile(NULL,
  STGM_TRANSACTED 
|  STGM_READWRITE  |  STGM_SHARE_EXCLUSIVE  /* | STGM_DELETEONRELEASE  */ | STGM_CREATE ,
  
0 & pStorage );

 
if  ( pStorage  ==  NULL  ||
  hResult 
!=  S_OK )
 {
  AfxThrowOleException( hResult );
 }
}

COleRichEditCtrl::IExRichEditOleCallback::
~ IExRichEditOleCallback()
{
}


 

HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetNewStorage(LPSTORAGE
*  lplpstg)
{
 m_iNumStorages
++ ;
 WCHAR tName[
50 ];
 swprintf(tName, L
" REOLEStorage%d " , m_iNumStorages);

 HRESULT hResult 
=  pStorage -> CreateStorage(tName, 
  STGM_TRANSACTED 
|  STGM_READWRITE  |  STGM_SHARE_EXCLUSIVE  |  STGM_CREATE ,
  
0 0 , lplpstg );

 
if  (hResult  !=  S_OK )
 {
  ::AfxThrowOleException( hResult );
 }

 
return  hResult;
}

HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::QueryInterface(REFIID iid, 
void   **  ppvObject)
{

 HRESULT hr 
=  S_OK;
 
* ppvObject  =  NULL;
 
 
if  ( iid  ==  IID_IUnknown  ||
  iid 
==  IID_IRichEditOleCallback )
 {
  
* ppvObject  =   this ;
  AddRef();
  hr 
=  NOERROR;
 }
 
else
 {
  hr 
=  E_NOINTERFACE;
 }

 
return  hr;
}



ULONG STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::AddRef()
{
 
return   ++ m_dwRef;
}

 

 

ULONG STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::Release()
{
 
if  (  -- m_dwRef  ==   0  )
 {
  delete 
this ;
  
return   0 ;
 }

 
return  m_dwRef;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetInPlaceContext(LPOLEINPLACEFRAME FAR 
* lplpFrame,
 LPOLEINPLACEUIWINDOW FAR 
* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo)
{
 
return  S_OK;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::ShowContainerUI(BOOL fShow)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp)
{
 
return  S_OK;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::DeleteObject(LPOLEOBJECT lpoleobj)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT FAR 
* lpcfFormat,
 DWORD reco, BOOL fReally, HGLOBAL hMetaPict)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::ContextSensitiveHelp(BOOL fEnterMode)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetClipboardData(CHARRANGE FAR 
* lpchrg, DWORD reco, LPDATAOBJECT FAR  * lplpdataobj)
{
 
return  E_NOTIMPL;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect)
{
 
return  S_OK;
}

HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetContextMenu(WORD seltyp, LPOLEOBJECT lpoleobj, CHARRANGE FAR 
* lpchrg,
 HMENU FAR 
* lphmenu)
{
 
return  S_OK;
}

//  TabRichEditCtrl 消息處理程序
UINT COleRichEditCtrl::OnGetDlgCode( ){

 
return  DLGC_WANTTAB;
}

Posted on 2007-01-13 17:15 艾凡赫 閱讀(3512) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): MFC

Feedback

# re: CRichEditCtrl   回復(fù)  更多評(píng)論   

2007-09-12 20:01 by aluocn
不能夠接受TAB鍵
UINT COleRichEditCtrl::OnGetDlgCode(){
return DLGC_WANTTAB;
}

F7編譯時(shí)提示如下:
error C2653: 'COleRichEditCtrl' : is not a class or namespace name
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品视频内| 久久―日本道色综合久久| 国产欧美日韩免费| 99精品久久久| 亚洲精品久久久久中文字幕欢迎你 | 亚洲美女av电影| 老鸭窝亚洲一区二区三区| 老司机免费视频久久| 国内伊人久久久久久网站视频| 亚洲欧美日韩视频二区| 欧美一区二区日韩一区二区| 欧美日韩亚洲免费| 99热精品在线| 亚洲欧美伊人| 国产日韩一区二区三区在线| 午夜一区二区三区在线观看| 久久国产99| 红桃视频一区| 欧美jizzhd精品欧美巨大免费| 欧美高清视频一二三区| 亚洲久色影视| 欧美系列一区| 性欧美暴力猛交69hd| 久久男人资源视频| 亚洲国产精品久久| 欧美日本一区二区三区| 亚洲婷婷在线| 久久男人av资源网站| 亚洲激情中文1区| 欧美日韩午夜精品| 亚洲欧美视频在线观看| 久久综合九色综合欧美狠狠| 亚洲人成在线播放网站岛国| 欧美日韩国产va另类| 亚洲男人的天堂在线| 久久综合狠狠综合久久综合88| 亚洲黄色高清| 欧美性大战久久久久| 欧美制服丝袜第一页| 亚洲福利视频网| 99精品热视频只有精品10| 欧美绝品在线观看成人午夜影视| 一区二区三区视频在线看| 久久久久久午夜| 99精品福利视频| 国产日韩欧美精品一区| 免费成人小视频| 亚洲午夜一级| 久久免费高清视频| 欧美韩国日本综合| 亚洲国产欧美在线人成| 久久综合国产精品| 欧美一区免费视频| 国产欧美在线播放| 欧美永久精品| 久久av一区二区三区漫画| 国产精品捆绑调教| 午夜日韩在线观看| 欧美一区2区视频在线观看 | 免播放器亚洲一区| 在线观看欧美日本| 亚洲日本在线视频观看| 欧美精品久久久久久久免费观看| 99国产精品自拍| 性欧美videos另类喷潮| 在线看日韩av| 日韩午夜一区| 国内精品免费午夜毛片| 亚洲韩日在线| 国产一二三精品| 欧美大片一区二区三区| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 一区二区三区 在线观看视| 日韩视频免费在线| 亚洲性感激情| 亚洲精品日本| 欧美在线地址| 亚洲欧美日韩综合国产aⅴ| 欧美在线看片a免费观看| 亚洲精品乱码久久久久久日本蜜臀| 亚洲最快最全在线视频| 永久免费毛片在线播放不卡| 一区二区三区日韩欧美| 亚洲日本在线视频观看| 性色av一区二区三区红粉影视| 亚洲人成网站777色婷婷| 欧美综合国产精品久久丁香| 亚洲影视中文字幕| 亚洲电影激情视频网站| 欧美色网在线| 91久久中文字幕| 日韩午夜av| 欧美激情网友自拍| 亚洲国产精品视频| 亚洲人成人99网站| 久久久爽爽爽美女图片| 久久成人综合网| 国产自产v一区二区三区c| 亚洲永久免费观看| 久久爱另类一区二区小说| 国产精品久久久久国产精品日日| 91久久久久久久久| 99精品99久久久久久宅男| 欧美国产一区在线| 亚洲激情国产| 亚洲一区区二区| 国产精品一区二区久久久久| 亚洲深夜福利网站| 久久精品夜色噜噜亚洲a∨ | 亚洲国产精品视频一区| 99re这里只有精品6| 欧美网站大全在线观看| 亚洲欧美成人在线| 欧美成人a视频| 中文网丁香综合网| 国产一区二区三区四区三区四 | 玖玖国产精品视频| 一区二区毛片| 久热精品视频在线| 99精品免费视频| 精品不卡视频| 国产精品av一区二区| 久久精品免费看| 一本色道久久88综合亚洲精品ⅰ | 欧美激情五月| 亚洲欧美日韩精品久久亚洲区 | 欧美电影在线观看| 亚洲字幕在线观看| 亚洲啪啪91| 久久久久久久综合狠狠综合| 99亚洲伊人久久精品影院红桃| 国产婷婷一区二区| 亚洲愉拍自拍另类高清精品| 久久国产66| 在线视频欧美日韩| 亚洲国内自拍| 你懂的网址国产 欧美| 亚洲欧美视频一区| 亚洲社区在线观看| 日韩午夜激情| 亚洲欧洲精品一区二区三区 | 欧美亚洲免费| 亚洲夜晚福利在线观看| 在线一区观看| 99成人在线| 亚洲精品免费一二三区| 欧美激情成人在线| 模特精品裸拍一区| 老司机精品福利视频| 久久久久久久综合日本| 久久激情视频免费观看| 久久av在线| 久久久亚洲成人| 美女精品在线| 亚洲国产成人精品女人久久久| 欧美高潮视频| 亚洲美女区一区| 制服丝袜亚洲播放| 亚洲在线一区二区| 欧美综合激情网| 蜜臀av在线播放一区二区三区| 亚洲人体1000| 亚洲综合色婷婷| 久久精品女人| 欧美日韩午夜精品| 国产婷婷色综合av蜜臀av| 在线播放日韩| 亚洲一级黄色片| 久久久中精品2020中文| 欧美激情日韩| 亚洲午夜免费视频| 久久久久成人精品| 欧美午夜视频网站| 雨宫琴音一区二区在线| 亚洲视频精品| 欧美激情视频一区二区三区免费| 亚洲精品免费电影| 欧美一级精品大片| 欧美日韩高清区| 狠狠狠色丁香婷婷综合激情| 一本久久a久久精品亚洲| 久久久.com| 国内精品久久久久影院优| 久久福利电影| 国产精品www网站| 国产欧美69| 一区二区欧美日韩| 欧美国产日韩亚洲一区| 日韩午夜av电影| 久久综合给合| 亚洲欧美日韩综合| 国产精品夫妻自拍| 一区二区三区四区五区在线| 欧美国产精品日韩| 久久精品一区二区三区中文字幕| 国产精品乱码人人做人人爱| 日韩一区二区福利| 91久久久国产精品| 欧美黄色成人网| 亚洲国产欧美国产综合一区|