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

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

?? asixwin.c

?? 嵌入式編程經(jīng)常遇到的語言編程技巧和概念
?? C
?? 第 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              窗口標題
 * Style                窗口風格,參見asixwin.h中的定義
 * x,y,width,Height     窗口的左上角坐標,以及窗口的寬度與高度,單位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();	//獲得當前窗口ID
	curtask = GetCurTask();			//獲得當前任務控制塊指針	

	// 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 ) //如果當前窗口不為空,我們必須將其壓如窗口棧
		{
			
			PushWindow(); //壓棧

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

			CurWindow = curwin = winptr; //更新當前窗口為所創(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; //窗口的任務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;	//獲得當前任務的窗口鏈入口
		curtask->wnd_ptr = winptr; 	//將當前窗口作為當前任務的窗口鏈入口
		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;		//當前窗口指向我們
		
		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();//獲得當前窗口與當前任務
	curtask = GetCurTask();

	/* 只有當前窗口可以刪除自己或則其所屬的子窗口*/
	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 {	/* 如果是Form窗口*/
		
		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;
			curwin->prev = wndptr->prev;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成年人国产精品| 国产一区二区三区香蕉| 国产喂奶挤奶一区二区三区| 欧美视频中文字幕| 日本精品免费观看高清观看| 91亚洲精品久久久蜜桃| 91小视频在线免费看| 91蜜桃在线免费视频| 色综合一区二区三区| 色综合一个色综合| 欧美日韩亚洲综合在线| 欧美电影在哪看比较好| 日韩一区二区在线观看视频 | 亚洲线精品一区二区三区| 亚洲人成网站色在线观看| 亚洲综合999| 丝袜美腿亚洲色图| 久久狠狠亚洲综合| 国产成人超碰人人澡人人澡| 91香蕉视频mp4| 欧美三片在线视频观看| 精品乱人伦一区二区三区| 久久久精品中文字幕麻豆发布| 国产欧美一区二区三区沐欲| 亚洲丝袜精品丝袜在线| 亚洲一区在线免费观看| 麻豆中文一区二区| 丁香桃色午夜亚洲一区二区三区| 99精品国产一区二区三区不卡| 在线观看av一区二区| 日韩免费一区二区| |精品福利一区二区三区| 亚洲福利一区二区三区| 激情综合网最新| 色婷婷久久综合| 精品久久久三级丝袜| 国产精品国产三级国产aⅴ入口 | 国产精品乱码人人做人人爱| 亚洲愉拍自拍另类高清精品| 老色鬼精品视频在线观看播放| 成人av免费在线| 91精品国产综合久久精品app| 中文字幕成人av| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人高清视频在线观看| 日韩欧美亚洲国产另类| 伊人色综合久久天天| 国产黄色91视频| 777色狠狠一区二区三区| 国产精品久久久久永久免费观看| 日韩av电影天堂| 91在线你懂得| 国产网站一区二区| 免费精品视频在线| 欧美专区亚洲专区| 亚洲男人的天堂一区二区| 国产精品综合一区二区三区| 欧美日韩激情一区二区| 一区二区三区波多野结衣在线观看| 久久电影网站中文字幕| 欧美电影影音先锋| 亚洲一区二区在线视频| a在线播放不卡| 国产日产欧产精品推荐色 | 日本一区二区免费在线观看视频| 日韩电影在线一区二区三区| 色狠狠桃花综合| 亚洲免费伊人电影| 色香蕉成人二区免费| 日韩一区欧美小说| 97精品超碰一区二区三区| 国产欧美一区二区精品忘忧草 | 色美美综合视频| 亚洲国产精品精华液ab| 狠狠狠色丁香婷婷综合激情| 日韩一区二区三区在线| 久久精品99国产精品日本| 日韩一级免费一区| 蜜桃精品视频在线| 精品免费日韩av| 国产精品99久| 欧美国产综合一区二区| 成人精品视频一区二区三区尤物| 国产亚洲一二三区| 成人h版在线观看| 国产精品你懂的在线欣赏| www.亚洲免费av| 亚洲毛片av在线| 欧美人体做爰大胆视频| 日本女人一区二区三区| 日韩欧美电影在线| 国产91精品精华液一区二区三区| 国产色产综合色产在线视频| 成人va在线观看| 亚洲图片欧美综合| 日韩欧美一级精品久久| 国产精品1024| 一区二区国产视频| 欧美一级夜夜爽| 成人高清视频在线| 日韩高清不卡一区二区三区| 久久综合色之久久综合| 色综合视频在线观看| 日韩精品一二三| 中文字幕在线不卡视频| 欧美三级在线视频| 国产精品系列在线播放| 亚洲女性喷水在线观看一区| 欧美日韩高清一区| 成人午夜激情影院| 亚洲国产精品久久久久秋霞影院 | 制服丝袜激情欧洲亚洲| 国产成人综合亚洲网站| 一区二区在线观看视频| 欧美大度的电影原声| 91视频免费观看| 久久福利视频一区二区| 亚洲精品国产无套在线观| 日韩亚洲电影在线| 成人app网站| 久久97超碰色| 亚洲一区二区三区四区五区黄 | 性感美女极品91精品| 欧美国产一区视频在线观看| 欧美美女bb生活片| 99精品视频一区| 国产综合一区二区| 日韩中文字幕区一区有砖一区| 国产精品久久久久影院色老大 | 欧美精选一区二区| 99re成人精品视频| 国产一区二区成人久久免费影院| 亚洲综合免费观看高清完整版在线 | 国产在线播放一区| 丝袜亚洲另类丝袜在线| 亚洲男人的天堂在线观看| 国产精品免费视频网站| 2024国产精品| 欧美变态口味重另类| 欧美日韩黄色一区二区| 91久久免费观看| 91在线porny国产在线看| 成人免费看视频| 国产风韵犹存在线视精品| 久久国产视频网| 久久成人免费电影| 精一区二区三区| 久久99国产精品麻豆| 日本vs亚洲vs韩国一区三区| 亚洲v日本v欧美v久久精品| 怡红院av一区二区三区| 一区二区三区在线不卡| 亚洲精品中文字幕在线观看| **网站欧美大片在线观看| 国产精品黄色在线观看 | 色狠狠桃花综合| 欧洲亚洲精品在线| 欧美调教femdomvk| 欧美久久久久免费| 欧美一区二区三区视频在线观看| 欧美片在线播放| 日韩一区二区三区免费观看| 欧美一级在线观看| 久久久午夜精品| 综合色天天鬼久久鬼色| 夜夜嗨av一区二区三区四季av| 亚洲一区在线电影| 婷婷久久综合九色综合伊人色| 日韩精品成人一区二区三区| 免费成人美女在线观看| 国产精品一区专区| 色吧成人激情小说| 91精品国产一区二区三区蜜臀| 亚洲欧美另类久久久精品2019| 亚洲精品免费在线| 免费成人在线网站| 国产成都精品91一区二区三| 99精品欧美一区二区三区小说 | 国产精品18久久久久久vr| 色94色欧美sute亚洲13| 3d动漫精品啪啪1区2区免费| 精品福利一二区| 亚洲女同ⅹxx女同tv| 蜜臀av亚洲一区中文字幕| 国产成人综合在线播放| 欧美无乱码久久久免费午夜一区| 精品国产一区二区三区久久久蜜月| 国产日韩欧美精品电影三级在线| 亚洲免费观看在线观看| 蜜乳av一区二区| 99久久精品免费看国产| 337p亚洲精品色噜噜噜| 国产精品久久久久久一区二区三区| 一二三区精品视频| 国产不卡视频在线播放| 精品视频在线看| 国产欧美日韩精品在线| 日韩av一二三| 91成人免费在线| 国产精品乱码人人做人人爱|