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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? asixwin.c.bak

?? 嵌入式編程經(jīng)常遇到的語言編程技巧和概念
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************
*
* Copyright  2000 National ASIC Center, All right Reserved
*
* FILE NAME:			asixwin.c
* PROGRAMMER:			Lingming
* Date of Creation:		2001/02/13
* 
* DESCRIPTION: 			The upper part of asix window system. Include the
*						Initial and Creating ,Destroy, DefWindowProc and
*						so on. this file offers the Application Programmer
*                       the ASIX Window API.
*
* NOTE:			 		 
*						 
*
* FUNCTIONS LIST:
* -------------------------------------------------------------------------
* STATUS ASIXInit(void)
* U32 CreateWindow(U8 ClassName, char *Caption, U32 Style, 
*				 	U16 x, U16 y, U16 Width, U16 Height,
*				 	U32 Parent, U32 hMenu, void *exdata)
* STATUS DestroyWindow(U32 Wndid)
* STATUS ASIXGetMessage(PMSG pMessage, U32 *pWnd_id, U16 Reserved1, U16 Reserved2)
* STATUS DefWindowProc(U16 MsgCmd, U32 lparam, P_U16 data, U16 wparam) 
* STATUS IsMyWindow(U32 Wndid, U32 Head)
* STATUS SetWindowText(U32 Wndid, P_U8 Caption, void *exdata);
* STATUS EnableWindow(U32 Wndid, U8 Enable);
* STATUS RepaintWindow(U32 wndid, U32 lparam);
* STATUS PopUpWindow(U32 wndid, U32 reserved );
* STATUS GetWindowStatus(U32 Wndid, P_U32 Status);
*
* GLOBAL VARS LIST:
* 
* WindowClass[]			the window class description const table,which
* 						defines the obj's relevent functions pointer
*
*
**************************************************************************
* MODIFICATION HISTORY
*
* 2001/02/13	by Lingming		Creation of this file
* 2001/05/07	by Lingming		Support window focus
* 2001/08/11	by Lingming		support dynamic shell 										
* 2001/08/29	by Lingming 	seperate task related funs to asixapp.c							
* 2001/09/10	by Lingming		in DefWindowProc(),we filter out the user defined msg
* 2001/10/26	by Lingming 	insert new created win at the list head rather than 
*								at the end that implemented in the old version
* 2001/11/23	by Lingming		bug fixing in CreateWindow, for the failure of the first 
*								win creation of the task.								
* 2001/11/27    by Lingming		add wnd id validation checking in IsMyWindow()
* 2001/11/28    by Lingming		send focus message to related controls in SetFocus()
* 2002/03/09    by Lingming		We add GetCurWindow() to replace the old PPSM version's 
*								CurWindow. This has two advantages: first, we donot need 
*								to handle a gloabl var which is good for a mutitasking 
*								environment and program structure; second, we now can 
*								handle window in backend.
* 2002/3/12     by Xuanhui&Zhuli change [Color Theme Init]
* 2002/03/19	by Lingming		Add group operation during destroy repaint
* 2002/03/20   	by Lingming		discard FocusWindow gloabl var
* 2002/03/22  	by Lingming		Add Repaint Message when destroy a window so that user can
*								repaint their client area.
* 2002/04/03	by longn_qi		bug fixxing in CreateWindow() "winptr->status |= WST_NORMAL;"
*								modification in IsMyMessage() and ASIXGetMessage()
* 2002/09/09	by longn_qi		added function "PopUpWindow"
*************************************************************************/

/* ANSI C lib */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/* asix window include file*/
#include "asixwin.h"
#include "xlmalloc.h"

// The controls head file
/*
#include <asixwin\button.h>
#include <asixwin\select.h>
#include <asixwin\asix_wn.h>
#include <asixwin\asix_mn.h>
#include <asixwin\asix_sb.h>
#include <asixwin\asix_lb.h>
#include <asixwin\asix_st.h>
#include <asixwin\alarm_q.h>
#include <asixwin\asix_ed.h>
#include <asixwin\asix_key.h>
#include <asixwin\asix_kb.h>
#include <asixwin\asix_tb.h>
*/


static STATUS PushWindow(void);
static STATUS PopWindow(void);
//static STATUS IsMyMessage(ASIX_WINDOW *Head,PMSG pMessage, P_MESSAGE pOldmsg);


/* Timers */ 
static void DoEveryMinute(void *arg);
static void DoEveryHour(void *arg);
static void DoEveryDay(void *arg);


/*check the timer*/
//STATUS AsixTimerCheck(void);

extern STATUS AnswerCall(void);


WNDCLASS			WindowClass[] = {
/* 	id,				create,			destroy,		msg_proc,		msg_trans,
	repaint,		move,			enable,			caption,		information,*/				
// for the course 5, we will just demonstrate how to construct the window link list
// we will use the tst WINCLASS to implementate all other WINCLASSes
// Lingming 2006/04/15

	{WNDCLASS_WIN,	tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_BUTTON,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_SELECT,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_SELECTCARD,NULL,  	NULL,			NULL,			NULL,
	NULL,			NULL,			NULL,			NULL,			NULL},

	{WNDCLASS_MENU,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_LIST,	tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
// modified by dsa 2002/04/17	
//	{WNDCLASS_COMBO,	NULL,		NULL,			NULL,			NULL,
//	NULL,			NULL,			NULL,			NULL,			NULL},
	{WNDCLASS_KEYBD,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},	
	
	{WNDCLASS_PROCESS,NULL,			NULL,			NULL,			NULL,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_SCROLL,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_KEYBAR,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_EDITOR,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	
//	{WNDCLASS_MUTIEDIT,NULL,		NULL,			NULL,			NULL,
//	NULL,			NULL,			NULL,			NULL,			NULL},
	
	{WNDCLASS_READER,tst_create,	tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
		
	{WNDCLASS_STATIC,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},
	{WNDCLASS_TSKBAR,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL},

//#ifdef ASIX_DEBUG	
	{WNDCLASS_TEST,tst_create,		tst_destroy,		tst_msgproc,	tst_msgtrans,
	NULL,			NULL,			NULL,			NULL,			NULL}
//#endif	
	
};

char	*WinClassName[] = 
{
	"Form",
	"Button",
	"Select",
	"SelectCard",
	"Menu",
	"ListBox",
	"KeyBoard",
	"Process",
	"ScrollBar",
	"KeyBar",
	"Editor",
	"Reader",
	"Static",
	"TaskBar",
	"TestControl"
};


ASIX_WINDOW			*CurWindow = NULL;		//point to current window entry	

////////////////////////////////////////////////////////////////////////////
//CurTask is not the real task control block, we use this for the course
//Lingming 2006/4/15
////////////////////////////////////////////////////////////////////////////
SYSTCB				CurTask;

									
/* we set the font size as var now , so that we 
 * can update the font size at run time 
 * By Lingming 2001/5/08 */

/* In Iris Phone Project the font size changed
 * By Lingming 2001/11/07	
 */ 
extern U8		CHINESE_CHAR_HEIGHT;
extern U8		CHINESE_CHAR_WIDTH;
extern U8		ENGLISH_CHAR_WIDTH;
extern U8		ENGLISH_CHAR_HEIGHT;


/* The seconds left before we run into doze or sleep */
S16	  	PowerSavingTimeOut;

/* The flag that define whether our own UART irpt driver should be used*/
/* We do have our own irpt handler, but in order to compatibal with old 
 * program the programer can select whether the new irpt handler or the 
 * PPSM's handler should be used. The default selection is PPSM's handler 
 */
U8		AsixOwnUartDriver = 0; //FALSE;




/**************************************************************************
 * 創(chuàng)建窗口函數(shù)
 * 入口參數(shù)說明:
 * className            所創(chuàng)建的窗口類,參見WindowClass[]數(shù)組
 * Caption              窗口標(biāo)題
 * Style                窗口風(fēng)格,參見asixwin.h中的定義
 * x,y,width,Height     窗口的左上角坐標(biāo),以及窗口的寬度與高度,單位pixel
 * Parent               窗口的父窗口ID
 * hMenu                該參數(shù)是為了同MS Win32 API兼容,本函數(shù)忽略該參數(shù)
 * exdata               傳遞給具體創(chuàng)建函數(shù)的其他數(shù)據(jù)
 * 返回值:              所創(chuàng)建窗口的ID,如果創(chuàng)建失敗則返回值為0
 ***************************************************************************/

U32 CreateWindow(U8 ClassName, char *Caption, U32 Style, 
				 U16 x, U16 y, U16 Width, U16 Height,
				 U32 Parent, U32 hMenu, void *exdata)
{
	
	void		 	*ctrl_str = NULL;
	ASIX_WINDOW		*parent_win, *winptr; //*kbwndptr;
	ASIX_WINDOW		*winlist;
	ASIX_WINDOW		*curwin; 
	SYSTCB			*curtask;				
	U32				old_curwindow = 0;
	//U16				padx=0,pady=0;
	U16				cursor;
	

	curwin =(ASIX_WINDOW *)GetCurWindow();	//獲得當(dāng)前窗口ID
	curtask = GetCurTask();			//獲得當(dāng)前任務(wù)控制塊指針	

	// Only in the Current window can we create the sub win
	// if task_id is 0, it maybe the recurse entry, so we donot check. 
	if (Parent!=0 && ((ASIX_WINDOW *)Parent)->task_id != 0 )
		if ( IsMyWindow(Parent, (U32)curwin)!= ASIX_OK) 
			return (U32)NULL;
	
	parent_win = (ASIX_WINDOW *)Parent;
	
	if ( ClassName >= WNDCLASS_MAX ) return (U32)NULL; //如果所創(chuàng)建的窗口類不存在,返回
	
	printf( "\n### Create %s ###\n", WinClassName[ClassName] );
	// allocate the window structure
	if ( (winptr = (ASIX_WINDOW *)SysLcalloc( sizeof(ASIX_WINDOW) ))==NULL )
	{
		printf( "### Create %s Error ###\n", WinClassName[ClassName] );
		return (U32)NULL;
	}
	
	if ( parent_win == NULL ) {
		// 父窗口為空,則我們創(chuàng)建的窗口類一定是Form或則測試窗口類
		if ( ClassName != WNDCLASS_WIN && ClassName != WNDCLASS_TEST ) {
			SysLfree(winptr); //釋放已申請的窗口數(shù)據(jù)結(jié)構(gòu)
			printf( "### Create %s Error ###\n", WinClassName[ClassName] );
			return (U32)NULL;
		}
		if ( curwin !=NULL ) //如果當(dāng)前窗口不為空,我們必須將其壓如窗口棧
		{
			
			PushWindow(); //壓棧

			old_curwindow = (U32)curwin; //保留原來的當(dāng)前窗口

			CurWindow = curwin = winptr; //更新當(dāng)前窗口為所創(chuàng)建的新窗口
			
		}	
			
	} else {
		// the sub win's class can not be WNDCLASS_WIN
		// the sub win must has the WS_CHILD style
		if ( ClassName == WNDCLASS_WIN || !(Style & WS_CHILD) ){
			SysLfree(winptr);	
			printf( "### Create %s Error ###\n", WinClassName[ClassName] );
			return (U32)NULL;
		}	
	}	
	//窗口數(shù)據(jù)結(jié)構(gòu)的填寫
	winptr->wndclass = &WindowClass[ClassName];
	winptr->wnd_id = (U32)winptr;
	winptr->parent_id = Parent;
	winptr->x = x;
	winptr->y = y;
	winptr->width = Width;
	winptr->hight = Height;
	winptr->caption = Caption;
	winptr->tag = NULL; 
	winptr->style = Style;
	winptr->hmenu = hMenu;
	winptr->exdata = exdata;
	
	//調(diào)用屬于該窗口類的具體創(chuàng)建函數(shù)
	if ( (*WindowClass[ClassName].create)(Caption, Style, x, y, Width,
	 Height, (U32)winptr, hMenu,(void **)&ctrl_str, exdata) != ASIX_OK )
	{
		if ( parent_win == NULL ){/* Only WNDCLASS_WIN creation failure should restore*/
			/* we will restore the old CurWindow and pop it */
			CurWindow = curwin = (ASIX_WINDOW *)old_curwindow;	
			
			if (curwin != NULL)
				PopWindow();//原來的老窗口出棧
			else { 	//The creation of first window of this task failed
				//we have no choice but exit this task. By Lingming 2001/11/23
				SysLfree(winptr);
				//EndofTask();
				printf( "### Create %s Error ###\n", WinClassName[ClassName] );
				return (U32)NULL; 
			}
							
						
		} //if ( parent_win == NULL )	
		
		SysLfree(winptr); //釋放窗口數(shù)據(jù)結(jié)構(gòu)
		printf( "### Create %s Error ###\n", WinClassName[ClassName] );
		return (U32)NULL;
	}

	winptr->task_id = curtask->id; //窗口的任務(wù)ID付值	
 	winptr->ctrl_str = ctrl_str;   //窗口的私有數(shù)據(jù)
	winptr->status |= WST_NORMAL | WST_EN_FOCUS; //for Destroy audit. 
								
	//將新創(chuàng)建的窗口數(shù)據(jù)結(jié)構(gòu)加入到窗口鏈表	
	
	if ( parent_win == NULL ) {
	//如果父窗口為空,所創(chuàng)建的窗口一定是Form	
		winlist = curtask->wnd_ptr;	//獲得當(dāng)前任務(wù)的窗口鏈入口
		curtask->wnd_ptr = winptr; 	//將當(dāng)前窗口作為當(dāng)前任務(wù)的窗口鏈入口
		winptr->next = winlist;		//將原來的窗口鏈連接到新窗口之后  
		if (winlist != NULL)		//如果原來的窗口鏈不為空
		{
			winptr->prev = winlist->prev; 	//則將新創(chuàng)建窗口的前指針指向原來的 
			winlist->prev = winptr;		//而將原來窗口鏈的前指針指向新創(chuàng)建窗口
		}
		else
		{
			winptr->prev = winptr;		//否則我們是第一個Form窗口
		}					//將前指針指向自己,構(gòu)建雙向鏈表
			
		
		CurWindow = curwin = winptr;		//當(dāng)前窗口指向我們
		
		SetFocus((U32)curwin); 			//Initaily, we set the container focus
		
	} else {
	//否則,我們創(chuàng)建的窗口一定是其他控件,他們一定有自己的父窗口	
			
		winlist = parent_win->child;	//獲得父窗口的子窗口鏈表
		parent_win->child = winptr;	//子窗口鏈表的入口指向新創(chuàng)建窗口
		winptr->next = winlist;		//將原來的窗口鏈連接到新窗口之后
		if (winlist != NULL)
		{//如果原來的子窗口鏈表不為空
			winptr->prev = winlist->prev;	//則將新創(chuàng)建窗口的前指針指向原來的
			winlist->prev = winptr;		//而將原來窗口鏈的前指針指向新創(chuàng)建窗口
		}
		else
		{
			winptr->prev = winptr;		//將前指針指向自己,構(gòu)建雙向鏈表
		}
				
	}
	
								  
	if ( (!(Style & WS_DISABLED)) && (ClassName != WNDCLASS_STATIC) )
		winptr->status |= WST_ENABLE;
	
	printf( "### Create %s 0x%x OK ###\n", WinClassName[ClassName], winptr );
	return (U32)winptr;		
	
}



STATUS DestroyWindow(U32 Wndid)
{
	ASIX_WINDOW				*wndptr;
	ASIX_WINDOW				*curwin;
	ASIX_WINDOW				*parent;
	
	SYSTCB					*curtask;
	U32						pGC;
	
	U32						repaint_id = 0;	//the window id we will repaint
	//MSG					msg;
	

	curwin = (ASIX_WINDOW *)GetCurWindow();//獲得當(dāng)前窗口與當(dāng)前任務(wù)
	curtask = GetCurTask();

	/* 只有當(dāng)前窗口可以刪除自己或則其所屬的子窗口*/
	if ( IsMyWindow(Wndid, (U32)curwin) != ASIX_OK ) return ASIX_ERROR; 
	
	wndptr = (ASIX_WINDOW *)Wndid;
	
	/* if we are destroying a control with children, we will 
	 * not repaint it when destroying the children.
	 * By Lingming 2002/03/20*/
	if (wndptr->child != NULL)	
		wndptr->status |= WST_FORM_REPAINT;
	
	printf( "### Destroy %s 0x%x ###\n", WinClassName[wndptr->wndclass->wndclass_id], wndptr );
	//下面的代碼涉及圖形操作,我們暫時不用考慮
	//pGC = GetGC();
	//GroupOn( pGC );
	
	//如果所刪除的窗口有子窗口,我們先通過遞歸刪除所有子窗口
	while (wndptr->child!=NULL) {
		
		if (DestroyWindow((U32)wndptr->child) != ASIX_OK ) {
			//刪除失敗,忽略這個子窗口,刪除下一個
			wndptr->child = wndptr->child->next;
			if (wndptr->child != NULL ) wndptr->child->prev = NULL;		
		}
	}
			
	//所有所屬的子窗口刪除完畢,調(diào)用具體的刪除函數(shù)刪除自己
	if ( (*wndptr->wndclass->destroy)(wndptr->ctrl_str) != ASIX_OK )
	{
		//GroupOff( pGC, wndptr->x, wndptr->y, wndptr->x + wndptr->width - 1, wndptr->y + wndptr->hight -1 );
		printf( "### Destroy %s Error ###\n", WinClassName[wndptr->wndclass->wndclass_id] );
		return ASIX_ERROR;
	}
			
	if (wndptr->style & WS_CHILD) /*如果是一個子窗口*/
	{
		
		if( wndptr->next == NULL )	// 如果是窗口鏈的最后一個
			// 將窗口鏈的首結(jié)點的前指針指向本窗口的前一個節(jié)點,構(gòu)建雙向鏈表,把自己
			// 從窗口鏈中取下來
			( (ASIX_WINDOW *)(wndptr->parent_id) )->child->prev = wndptr->prev;
		else
			//將這個窗口數(shù)據(jù)結(jié)構(gòu)從鏈表中取下來
			wndptr->next->prev = wndptr->prev;

		if( wndptr->prev->next == NULL )// 如果是窗口連的第一個節(jié)點
			//將窗口鏈的入口指向我們的后一個節(jié)點	
			( (ASIX_WINDOW *)(wndptr->parent_id) )->child = wndptr->next;
		else
			//將這個窗口數(shù)據(jù)結(jié)構(gòu)從鏈表中取下來
			wndptr->prev->next = wndptr->next;//
			
	} else {	/* it is the container*/
		
		if (wndptr->next == NULL) /*It is the only one*/
		{
			curtask->wnd_ptr = NULL;
			
			CurWindow = curwin = NULL;//It seems we donot need this either!!
			
			//we will return now Lingming 2002/03/20
			wndptr->status = WST_DESTROYED;//for destroy audit. by Lingming 2001/11/27
			
			printf( "### Destroy %s 0x%x OK ###\n", WinClassName[wndptr->wndclass->wndclass_id], wndptr );
			SysLfree(wndptr);	
	
			//printf( "### Destroy %s OK ###\n", WinClassName[wndptr->wndclass->wndclass_id] );
			return ASIX_OK;
					
		} else {  /* CurWindow must be the first one */
			
			CurWindow = curwin = wndptr->next;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女任你摸久久| 亚洲一区视频在线| 国产.精品.日韩.另类.中文.在线.播放| 欧美精品在线观看播放| 亚洲自拍都市欧美小说| 欧美精品久久久久久久久老牛影院| 亚洲va在线va天堂| 91精品国产综合久久精品| 久久电影国产免费久久电影| 久久精品视频一区二区三区| 丁香亚洲综合激情啪啪综合| 亚洲色图制服诱惑 | 麻豆精品一区二区av白丝在线| 欧美日韩一二区| 日本午夜一本久久久综合| 欧美大尺度电影在线| 国内久久精品视频| 日本一区二区三区四区| 欧美曰成人黄网| 蜜桃视频在线观看一区| 国产日韩一级二级三级| 色婷婷激情久久| 日韩精品一二三| 久久久亚洲精华液精华液精华液| 91在线观看美女| 免费日韩伦理电影| 中文在线免费一区三区高中清不卡| 色猫猫国产区一区二在线视频| 天堂久久久久va久久久久| 久久久无码精品亚洲日韩按摩| 99精品视频在线免费观看| 男男视频亚洲欧美| 综合久久国产九一剧情麻豆| 欧美精选一区二区| 波多野结衣一区二区三区 | 免费看欧美女人艹b| 国产亚洲制服色| 欧美三级三级三级爽爽爽| 国产成人亚洲综合色影视| 亚洲一区二区三区美女| 国产亚洲欧美在线| 欧美一级爆毛片| 日本电影欧美片| 国产在线视频一区二区| 日韩中文字幕麻豆| 自拍偷拍国产亚洲| 久久久五月婷婷| 91丨porny丨户外露出| 亚洲资源在线观看| 欧美日高清视频| 国产精品自拍网站| 久久久亚洲精品石原莉奈| ●精品国产综合乱码久久久久| 亚洲精品成人少妇| 成人性生交大片| 视频一区二区欧美| 国产视频一区二区在线| 国产成人亚洲综合a∨猫咪| 亚洲三级免费观看| 久久er99精品| 亚洲欧美一区二区久久| 久久久久国产一区二区三区四区| 欧美精品日韩精品| 91视频91自| 蜜乳av一区二区| 欧美三级三级三级| 日韩激情视频在线观看| 亚洲综合久久av| 日韩理论片网站| 国产亚洲综合av| 久久久久久久综合色一本| 精品人在线二区三区| 91精品国产全国免费观看| 欧美探花视频资源| 91福利视频久久久久| 99视频一区二区| 92国产精品观看| 99久久精品免费精品国产| 国产成人午夜片在线观看高清观看| 日本va欧美va瓶| 麻豆精品视频在线观看视频| 久草在线在线精品观看| 久久国产精品无码网站| 国产一区二区三区四| 国产精品中文欧美| 成人午夜视频在线观看| 本田岬高潮一区二区三区| 91免费国产视频网站| 91老师国产黑色丝袜在线| 欧美在线视频全部完| 欧美日韩一区二区三区在线看| 精品视频全国免费看| 56国语精品自产拍在线观看| 日韩精品最新网址| 国产婷婷色一区二区三区| 国产精品乱码久久久久久| 亚洲日本免费电影| 午夜精品福利久久久| 久久99国产精品尤物| 成人免费视频caoporn| 日本道免费精品一区二区三区| 欧美老肥妇做.爰bbww| 精品欧美乱码久久久久久| 欧美激情一区二区三区蜜桃视频 | 岛国一区二区在线观看| 国产99久久久国产精品潘金| 色综合一区二区| 日韩欧美专区在线| 亚洲欧美综合色| 三级久久三级久久久| 国产精品中文字幕欧美| 日本韩国一区二区| 亚洲精品一区二区在线观看| 亚洲品质自拍视频| 免费观看在线综合| 91美女片黄在线观看91美女| 欧美一区二区女人| 中文字幕va一区二区三区| 丝袜脚交一区二区| 懂色av噜噜一区二区三区av| 欧美日韩高清在线| 国产精品美女久久久久aⅴ| 五月激情丁香一区二区三区| 国产成人精品在线看| 欧美色精品天天在线观看视频| 久久久久国产精品厨房| 亚洲成人久久影院| 国产麻豆91精品| 欧美性受极品xxxx喷水| 国产欧美精品一区二区三区四区 | 夜夜精品视频一区二区| 日本三级韩国三级欧美三级| 99re热这里只有精品视频| 日韩欧美黄色影院| 亚洲在线成人精品| 波多野结衣欧美| 久久精品日韩一区二区三区| 日韩精品一区第一页| 在线观看亚洲精品| 国产精品久久综合| 国产传媒日韩欧美成人| 欧美高清视频在线高清观看mv色露露十八| 国产亚洲精品久| 久久99精品网久久| 8x8x8国产精品| 亚洲免费资源在线播放| 国产999精品久久久久久| 日韩欧美高清dvd碟片| 亚洲国产日韩一级| 色哟哟亚洲精品| 亚洲丝袜自拍清纯另类| 国产黄人亚洲片| 久久久99免费| 精品一区二区免费看| 日韩精品一区二区三区视频| 午夜伊人狠狠久久| 欧美性做爰猛烈叫床潮| 亚洲欧美日韩国产成人精品影院| 国产精品系列在线播放| 久久综合丝袜日本网| 黑人精品欧美一区二区蜜桃| 欧美一区二区三区四区久久 | 2021中文字幕一区亚洲| 日韩极品在线观看| 制服丝袜国产精品| 午夜天堂影视香蕉久久| 欧美肥大bbwbbw高潮| 午夜视频一区二区| 欧美一卡2卡三卡4卡5免费| 免费亚洲电影在线| 日韩欧美国产午夜精品| 久久草av在线| 久久综合色天天久久综合图片| 国内精品嫩模私拍在线| 国产日韩欧美制服另类| 丁香啪啪综合成人亚洲小说| 国产精品久久久久国产精品日日| 成人小视频在线| 亚洲精品水蜜桃| 欧美人狂配大交3d怪物一区| 日韩影院免费视频| 欧美成人精品高清在线播放 | 美女视频网站久久| 欧美mv和日韩mv国产网站| 久久丁香综合五月国产三级网站| 国产综合色在线视频区| 国产精品不卡在线| 欧美日韩一二三| 精品一区二区三区av| 国产精品久久久爽爽爽麻豆色哟哟 | 91看片淫黄大片一级在线观看| 亚洲乱码国产乱码精品精小说 | 欧美一区永久视频免费观看| 毛片av中文字幕一区二区| 国产视频亚洲色图| 在线观看国产一区二区| 老司机精品视频线观看86| 国产日韩欧美精品综合| 欧日韩精品视频| 国产在线精品国自产拍免费|