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

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

?? hexeditwnd.cpp

?? 這是一個編輯器 這是一個編輯器
?? CPP
?? 第 1 頁 / 共 5 頁
字號:

#include "16Edit.h"
#include <commctrl.h>
#include <stddef.h>
#include "HexEditWnd.h"
#include "File.h"
#include "Common.h"
#include "16EditDll.h"
#include "CPathString.h"
#include "WideChar.h"

//
// function prototypes
//
LRESULT  __stdcall HEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT  __stdcall TBHookProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL     __stdcall GotoDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL     __stdcall SelBlockDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL     __stdcall SearchDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
DWORD    __stdcall HEditWindowThread(void* pArg);

//
// constants
//
//const DWORD             dwMinusOne          = -1;

#define                 ID_TB               0x2000
#define                 ID_TRAYICON         0x2001

#define                 IDT_FIRST           0x1000
#define                 IDT_RESTORE         IDT_FIRST + 1
#define                 IDT_EXIT            IDT_FIRST + 2
#define                 WM_TRAYMENU         WM_USER   + IDT_FIRST

/*                      
#define                 TB_FIRST            0x500
#define                 TB_CLOSE            TB_FIRST +  1
#define                 TB_SAVE             TB_FIRST +  2
#define                 TB_GOTO             TB_FIRST +  3
#define                 TB_ABOUT            TB_FIRST +  4
#define                 TB_WIN2TOP          TB_FIRST +  5
#define                 TB_SEARCH           TB_FIRST +  6
#define                 TB_SELBLOCK         TB_FIRST +  7
#define                 TB_CUT              TB_FIRST +  8
#define                 TB_COPY             TB_FIRST +  9
#define                 TB_PASTE            TB_FIRST + 10
*/

// tb buttons
const TBBUTTON   TBbs[]       = 
{
	{  6, TB_WIN2TOP,        TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  1, TB_GOTO,           TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  8, TB_SELBLOCK,       TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{ 15, TB_SELALL,         TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  7, TB_SEARCH,         TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{ 13, TB_SEARCHDOWN,     TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{ 12, TB_SEARCHUP,       TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  0, NULL,              TBSTATE_ENABLED, (BYTE)TBSTYLE_SEP,    0, 0},
	{ 14, TB_UNDO,           TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  2, TB_SAVE,           TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  0, NULL,              TBSTATE_ENABLED, (BYTE)TBSTYLE_SEP,    0, 0},
	{  9, TB_CUT,            TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{ 10, TB_COPY,           TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{ 11, TB_PASTE,          TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  0, NULL,              TBSTATE_ENABLED, (BYTE)TBSTYLE_SEP,    0, 0},
	{  3, TB_ABOUT,          TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0},
	{  0, TB_CLOSE,          TBSTATE_ENABLED, (BYTE)TBSTYLE_BUTTON, 0, 0}
};

#define					HEDIT_WND_CLASS     "16Edit Main Window"
#define					HEDIT_WND_TITLE     "[ 16Edit FX ]"
#define                 HEDIT_TRAY_TIP      "[16Edit]"
#define                 szMemoryBuff        "memory buffer"
#define                 HEDIT_WND_WIDTH     638
#define					HEDIT_WND_HEIGHT    400
#define                 SB_HEIGHT           20

#define                 INI_NAME            "16Edit.ini"
#define                 INI_SECTION         "Options"
#define                 INI_WINPOSKEY       "WinPos"

#define                 CF_16Edit           "CF_16EDIT"

#define                 STR_NO_MEM          "Not enough memory available !"

#define                 DEF_FONT_HEIGHT     17
#define                 DEF_FONT_WIDTH       8

#define                 RGB_BLACK           RGB(0, 0, 0)
#define                 RGB_RED             RGB(0xFF, 0, 0)
#define                 RGB_SBGRAY          RGB(0x40, 0x40, 0x40)

#define                 H2                  "%02lX"
#define                 H8                  "%08lX"
#define                 _H8                 "0x%08lX"

#define                 DEF_MAX_LINES       19 // A LOOK UP VALUE
#define                 PAIRS_X             (11 * uFontWidth)
#define                 DIGIT_PAIR_WIDTH    (3  * uFontWidth)
#define                 CHARS_X             (PAIRS_X + 16 * DIGIT_PAIR_WIDTH + uFontWidth)

#define                 WM_MOUSEWHEEL       0x020A
#define                 WHEEL_MOVE_STEPS    4

//
// global variables
//
BOOL               bStartCaretPos;
HE_POS             posStartCaretPos;

BOOL               bStartSel;
DWORD              dwStartSelStart;
DWORD              dwStartSelEnd;

BOOL               bStartOnTop;

BOOL               bParentWin;
HWND               hwndParent;

WNDPROC            pOrgTBWndProc;

HexEditWnd::HexEditWnd()
{
	LOGFONT lf;

	// save dll base
	hDllBase = GetModuleHandle(HEDIT_DLL_NAME);

	//
	// init some variables
	//
	iyHETop           = 0;
	iyHEBottom        = 0;
	bHEVisible        = FALSE;

	InitEdition();
	ZERO(search);

	// path/dir stuff
	GetModuleFileName( hInst, cInitialDir, sizeof(cInitialDir) );
	CPathString::PathToDir( cInitialDir );
	CPathString::ForceEndBackslash( cInitialDir);
	wsprintf(cIniPath, "%s"INI_NAME, cInitialDir);

	// create text font
	ZERO(lf);
	lf.lfHeight     = DEF_FONT_HEIGHT;
	lf.lfWidth      = DEF_FONT_WIDTH;
	lf.lfWeight     = FW_LIGHT;
	lstrcpy(lf.lfFaceName, "Courier New");
	hFont   = CreateFontIndirect(&lf);

	lf.lfUnderline  = TRUE;
	hFontU  = CreateFontIndirect(&lf);

	// create an own clipboard format
	cf16Edit = RegisterClipboardFormat(CF_16Edit);

	// build tray popup menu
	hmTray = CreatePopupMenu();
	AppendMenu(hmTray, MF_STRING, IDT_RESTORE, "restore");
	AppendMenu(hmTray, MF_STRING, IDT_EXIT, "exit");
}

HexEditWnd::~HexEditWnd()
{
	//
	// Cleanup
	//
	DeleteObject(hFont);
	DeleteObject(hFontU);

	DestroyMenu(hmTray);

	if (search.bInited)
	{
		if (search.pData)
			free(search.pData);
		if (search.pDlgStr)
			free(search.pDlgStr);
	}
}

void HexEditWnd::InitEdition()
{
	//
	// init some variables
	//
	ZERO(stat);
	ZERO(search);
	hMainWnd          = 0;
	diData.dwSize     = 0;
	bHEOnTop          = 0;
	uMaxLines         = DEF_MAX_LINES;
	bResizingAllowed  = FALSE;
	pActionHandler    = NULL;
	bStartCaretPos    = FALSE;
	bStartSel         = FALSE;
	bStartOnTop       = FALSE;
	bParentWin        = FALSE;
	bMinToTray        = FALSE;
	bSaveWinPos       = FALSE;
	bRestoreWinPos    = FALSE;
	bUserWinPos       = FALSE;

	return;
}

void HexEditWnd::QuitEdition()
{
	free(diData.pDataBuff);
	// diOrgData.pDataBuff is freeed by "FILE::~FILE"

	return;
}

LRESULT __stdcall HEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_SHOWWINDOW:
		HEdit.HEHandleWM_SHOWWINDOW(hWnd, uMsg, wParam, lParam);
		break;

	case WM_SIZE:
		HEdit.HEHandleWM_SIZE(hWnd, wParam, lParam);
		break;

	case WM_NOTIFY:
		if (HEdit.HEHandleWM_NOTIFY(hWnd, uMsg, wParam, lParam))
			return 0;
		break;

	case WM_MOVE:
		HEdit.HEHandleWM_MOVE(hWnd, wParam, lParam);
		break;

	case WM_PAINT:
		HEdit.PaintText(hWnd);
		break;

	case WM_KEYDOWN:
		HEdit.HEHandleWM_KEYDOWN(hWnd, uMsg, wParam, lParam);
		break;

	case WM_CHAR:
		return HEdit.HEHandleWM_CHAR(hWnd, uMsg, wParam, lParam);

	case WM_LBUTTONDOWN:
	case WM_LBUTTONUP:
		HEdit.HEHandleLButton(hWnd, uMsg, wParam, lParam);
		break;

	case WM_MOUSEMOVE:
		HEdit.HEHandleWM_MOUSEMOVE(hWnd, uMsg, wParam, lParam);
		break;

	case WM_MOUSEWHEEL: // mouse scrolling support
		HEdit.HEHandleWM_MOUSEWHEEL(hWnd, uMsg, wParam, lParam);
		break;

	case WM_VSCROLL:
		HEdit.HEHandleWM_VSCROLL(hWnd, uMsg, wParam, lParam);
		break;

	case WM_SETFOCUS:
		HEdit.HEHandleWM_SETFOCUS(hWnd);
		break;
          
    case WM_KILLFOCUS:
		HEdit.HEHandleWM_KILLFOCUS(hWnd);
		break;

	case WM_COMMAND:
		HEdit.HEHandleWM_COMMAND(hWnd, uMsg, wParam, lParam);
		break;

	case WM_TRAYMENU:
		HEdit.HEHandleWM_TRAYMENU(hWnd, uMsg, wParam, lParam);
		return 0;

	case WM_CLOSE:
		HEdit.HEHandleWM_CLOSE(hWnd, uMsg, wParam, lParam);
		break;
	}

	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

//
// report the main window procedure about WM_MOUSEMOVE to support scrolling up
// while selecting a block
//
LRESULT __stdcall TBHookProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_MOUSEMOVE:
		HEdit.HEHandleWM_MOUSEMOVE(hWnd, uMsg, wParam, lParam);
		break;

	case WM_LBUTTONUP:
		SendMessage(HEdit.GetHEditWndHandle(), uMsg, 0, 0);
		break;
	}

	return CallWindowProc(pOrgTBWndProc, hWnd, uMsg, wParam, lParam);
}

BOOL __stdcall GotoDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_INITDIALOG:
		HEdit.InitGotoDlg(hDlg);
		return TRUE;

	case WM_SHOWWINDOW:
		SetFocus( GetDlgItem(hDlg, GO_OFFSET) );
		return TRUE;

	case WM_COMMAND:
		return HEdit.GDHandleWM_COMMAND(hDlg, uMsg, wParam, lParam);

	case WM_CLOSE:
		EndDialog(hDlg, wParam);
		return TRUE;
	}

	return FALSE; // ERR
}

BOOL __stdcall SelBlockDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_INITDIALOG:
		HEdit.InitSelBlockDlg(hDlg);
		return TRUE;

	case WM_SHOWWINDOW:
		CheckDlgButton(hDlg, SB_RADIOEND, TRUE);
		SetFocus( GetDlgItem(hDlg, SB_START) );
		return TRUE;

	case WM_COMMAND:
		return HEdit.SBHandleWM_COMMAND(hDlg, uMsg, wParam, lParam);

	case WM_CLOSE:
		EndDialog(hDlg, 0);
		return TRUE;
	}

	return FALSE; // ERR
}

BOOL __stdcall SearchDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_INITDIALOG:
		HEdit.SSInitDlg(hDlg, uMsg, wParam, lParam);
		return TRUE;

	case WM_SHOWWINDOW:
		SetFocus( GetDlgItem(hDlg, SS_STR) );
		return TRUE;

	case WM_COMMAND:
		return HEdit.SSHandleWM_COMMAND(hDlg, uMsg, wParam, lParam);

	case WM_CLOSE:
		EndDialog(hDlg, 0);
		return TRUE;
	}

	return FALSE; // ERR
}

BOOL HexEditWnd::CreateMainWndThread()
{
	return GuiThread.Create(HEditWindowThread, NULL, 0);
}

DWORD __stdcall HEditWindowThread(void* pArg)
{
	WNDCLASS               wc;
	MSG                    msg;
	UINT                   icx, icy, ix, iy;
	HWND                   hWnd, hTB;
	RECT                   rct;
	HACCEL                 hAccel;
	HE_ACTION              act;
	HE_WIN_POS             wp;

	InitCommonControls();

	//
	// do window stuff
	//
	ZERO(wc);
	wc.style          = CS_HREDRAW | CS_VREDRAW;
	wc.hInstance      = HEdit.GetInstance();
	wc.hIcon          = LoadIcon(HEdit.GetInstance(), (PSTR)IDI_16Edit);
	wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszClassName  = HEDIT_WND_CLASS;
	wc.lpfnWndProc    = HEditWndProc;
	RegisterClass(&wc);

	icx = HEDIT_WND_WIDTH;
	icy = HEDIT_WND_HEIGHT;
	ix = (GetSystemMetrics(SM_CXFULLSCREEN) - icx) / 2;
	iy = (GetSystemMetrics(SM_CYFULLSCREEN) - icy) / 2;

	// create main wnd
	hWnd = CreateWindow(
		HEDIT_WND_CLASS,
		HEDIT_WND_TITLE,
		WS_OVERLAPPEDWINDOW | WS_VSCROLL,
		ix,
		iy,
		icx,
		icy,
		bParentWin ? hwndParent : 0,                  // HE_SET_PARENTWINDOW
		NULL,
		HEdit.GetInstance(),
		NULL);
	HEdit.SetHEditWndHandle(hWnd);

	// handle parent window state
	if (bParentWin)
		if (IsWindowEnabled(hwndParent))
			EnableWindow(hwndParent, FALSE);

	// create toolbar
	hTB = CreateToolbarEx(
		hWnd,
		WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT,
		ID_TB,
		16, // number of buttons in the bitmap
		NULL,
		(DWORD)LoadBitmap(HEdit.GetInstance(), (PSTR)IDB_TOOLBAR),
		(LPTBBUTTON)&TBbs,
		17, // number of buttons to create
		16,
		16,
		16,
		16,
		sizeof(TBBUTTON));
	// save TB information
	HEdit.SetTBHandle(hTB);
	GetClientRect(hTB, &rct);
	HEdit.iyHETop = rct.bottom - rct.top + 2;

	// hook TB
	pOrgTBWndProc = (WNDPROC)SetWindowLong(
		hTB,
		GWL_WNDPROC,
		(DWORD)TBHookProc);

	// load accelerator
	hAccel = LoadAccelerators(HEdit.GetInstance(), (PSTR)IDR_ACCEL);

	// show wnd
	ShowWindow(hWnd, SW_SHOWNORMAL);
	UpdateWindow(hWnd);
	
	//
	// handle HE_SET_USERWINDOWPOSITION/HE_SET_RESTOREWINDOWPOSITION
	//
	if ( HEdit.bUserWinPos )
	{
		wp = HEdit.wpUser;
		SetWindowPos( hWnd, HWND_NOTOPMOST, wp.ix, wp.iy, wp.icx, wp.icy, SWP_SHOWWINDOW );
		ShowWindow( hWnd, wp.iState );
	}
	else if ( HEdit.bRestoreWinPos )
	{
		if ( GetPrivateProfileStruct(INI_SECTION, INI_WINPOSKEY, &wp, sizeof(wp), HEdit.cIniPath) )
		{
			SetWindowPos(
				hWnd,
				HWND_NOTOPMOST,
				wp.ix, wp.iy, wp.icx, wp.icy, 
				SWP_SHOWWINDOW);
			ShowWindow(hWnd, wp.iState);
		}
	}

	//
	// handle specified caret/sel settings
	//
	HEdit.HandleStartCaretPosSel(hWnd);

	//
	// HE_SET_ONTOP ?
	//
	if (bStartOnTop)
		SendMessage(hWnd, WM_COMMAND, TB_WIN2TOP, 0);

	HEdit.bHEVisible = TRUE;

	//
	// inform about HE_ACTION_WINDOWCREATED
	//
	if (HEdit.pActionHandler)
	{
		ZERO(act);
		act.dwActionCode   = HE_ACTION_WINDOWCREATED;
		act.hwnd16Edit     = hWnd;
		HEdit.pActionHandler(&act);		
	}

	//
	// enter win loop
	//
	while(GetMessage(&msg, NULL, 0, 0))
	{
		if (!TranslateAccelerator(hWnd, hAccel, &msg))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return 0;
}

HWND HexEditWnd::GetHEditWndHandle()
{
	return hMainWnd;
}

void HexEditWnd::SetHEditWndHandle(HWND hWnd)
{
	hMainWnd = hWnd;

	return;
}

void HexEditWnd::SetTBHandle(HWND hTB)
{
	this->hTB = hTB;

	return;
}

HINSTANCE HexEditWnd::GetInstance()
{
	return hDllBase;
}

void HexEditWnd::SetVisible(BOOL bVisible)
{
	if (bVisible)
	{
		ShowWindow(hMainWnd, SW_SHOWNORMAL);
		UpdateWindow(hMainWnd);
	}
	else
		ShowWindow(hMainWnd, SW_HIDE);

	return;
}

BOOL HexEditWnd::SetHEDataInfo(PHE_DATA_INFO pDI)
{	
	void* p;

	// cleanup file map
	fInput.Destroy();

	// copy data mem
	p = malloc(pDI->dwSize);
	if (!p)
		return FALSE; // ERR
	memcpy( 
		p,
		pDI->pDataBuff,
		pDI->dwSize);

	// save infos
	diData = diOrgData = *pDI;
	diData.pDataBuff = p;

	// set title
	SetHEWndCaption();

	return TRUE; // OK
}

BOOL HexEditWnd::DoEditFile(char* szFilePath, BOOL bForceReadOnly)
{
	BOOL          bRet;
	void          *p;
	HE_ACTION     act;

	// cleanup file map
	fInput.Destroy();

	// get file handle
	if (bForceReadOnly)
		bRet = fInput.GetFileHandle(szFilePath, F_OPENEXISTING_R);
	else
		bRet = fInput.GetFileHandleWithMaxAccess(szFilePath);
	if (!bRet)
		return FALSE; // FAILURE

	// map file
	if (!fInput.MapFile())
		return FALSE; // FAILURE

	// fill diData
	diOrgData.bReadOnly  = fInput.IsFileReadOnly();
	diOrgData.dwSize     = fInput.GetFSize();
	diOrgData.pDataBuff  = fInput.GetMapPtr();

	// make a copy of this memory block
	p = malloc(diOrgData.dwSize);
	if (!p)
		return FALSE; // ERR
	memcpy(
		p,
		diOrgData.pDataBuff,
		diOrgData.dwSize);
	diData = diOrgData;
	diData.pDataBuff = p;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re免费视频精品全部| 亚洲精品在线观看网站| 亚洲乱码国产乱码精品精的特点 | 91麻豆精品国产91久久久久久久久 | 精品日韩在线一区| 精品亚洲国内自在自线福利| 久久伊99综合婷婷久久伊| 国产在线播放一区二区三区| 国产无一区二区| gogo大胆日本视频一区| 亚洲精品综合在线| 在线综合+亚洲+欧美中文字幕| 麻豆精品国产91久久久久久| 国产日韩视频一区二区三区| 99久久久精品免费观看国产蜜| 亚洲精品视频自拍| 欧美一区三区二区| 高清av一区二区| 一区二区三区在线播| 宅男在线国产精品| 成人免费视频视频在线观看免费| 亚洲激情在线播放| 欧美一区二区成人| 国产精品66部| 亚洲va欧美va天堂v国产综合| 欧美变态口味重另类| 成人app软件下载大全免费| 亚洲小说欧美激情另类| 精品999在线播放| 一本一道综合狠狠老| 免费成人美女在线观看.| 国产视频一区在线观看| 欧美伊人久久大香线蕉综合69| 日本不卡一区二区三区高清视频| 国产日韩精品视频一区| 欧美日韩亚洲丝袜制服| 国产精品123区| 无吗不卡中文字幕| 欧美韩国日本不卡| 3d动漫精品啪啪1区2区免费 | 精品国产乱码久久久久久蜜臀| 99精品偷自拍| 黄网站免费久久| 一区二区激情视频| 国产精品三级视频| 51精品秘密在线观看| 成人黄色a**站在线观看| 一区二区三区中文在线观看| 成人app在线观看| 一本色道a无线码一区v| 国产在线视频精品一区| 亚洲一区二区在线视频| 国产午夜精品一区二区| 91精品国产综合久久小美女| 色香蕉久久蜜桃| 国模套图日韩精品一区二区| 天堂蜜桃91精品| 亚洲欧美日韩国产中文在线| 国产欧美精品一区aⅴ影院| 日韩欧美一级二级| 欧美写真视频网站| 丁香啪啪综合成人亚洲小说 | 色诱亚洲精品久久久久久| 国产精品1区2区3区在线观看| 免费高清在线视频一区·| 亚洲成人午夜影院| 亚洲精品日韩一| 久久九九久精品国产免费直播| 日韩精品一区二区三区四区视频| 欧美性一级生活| 成人免费毛片嘿嘿连载视频| 激情综合一区二区三区| 日韩精品免费视频人成| 一区二区三区精品久久久| 亚洲欧美成人一区二区三区| 国产精品伦一区| 中文字幕av不卡| 日本一区二区成人| 91啪九色porn原创视频在线观看| 日韩va欧美va亚洲va久久| 久久精品国产99国产精品| 色婷婷久久综合| 国内精品伊人久久久久影院对白| 久热成人在线视频| 亚洲福利视频一区| 亚洲午夜国产一区99re久久| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲人妖av一区二区| 欧美国产精品一区二区三区| 欧美韩国一区二区| 国产精品视频你懂的| 国产精品久久久久久久久晋中| 中文字幕在线一区二区三区| 亚洲人快播电影网| 亚洲第一成人在线| 日韩不卡一区二区三区| 蜜臀av一区二区| 国产麻豆精品久久一二三| 国产麻豆午夜三级精品| 国产91色综合久久免费分享| 91一区二区在线观看| 色中色一区二区| 91精品国产一区二区人妖| 精品久久久久久久久久久久久久久| 久久久蜜臀国产一区二区| 国产免费观看久久| 亚洲成人av一区二区三区| 免费高清成人在线| 国产91在线观看丝袜| 亚洲福利视频三区| 精彩视频一区二区三区| 亚洲色图一区二区三区| 亚洲一区av在线| 老司机午夜精品| 成人免费看视频| 欧美在线观看一二区| 在线电影欧美成精品| 久久免费美女视频| 亚洲乱码日产精品bd| 日本欧洲一区二区| 成人午夜电影网站| 欧美日韩国产一区二区三区地区| 在线成人av影院| 国产欧美一区二区精品仙草咪| 一区二区三区日韩欧美| 偷拍与自拍一区| 国产电影精品久久禁18| 欧美亚洲一区三区| 国产亚洲va综合人人澡精品| 国产欧美精品国产国产专区 | 国产精品国产成人国产三级| 午夜成人免费视频| 国产98色在线|日韩| 91免费版pro下载短视频| 日韩欧美电影一二三| 国产精品成人午夜| 久久国产欧美日韩精品| 欧美中文字幕一区二区三区亚洲| 国产日韩欧美精品一区| 日韩精品五月天| 国产成人亚洲综合a∨猫咪| 91精品国产欧美一区二区| 中文字幕在线观看不卡视频| 久久爱另类一区二区小说| 欧洲精品视频在线观看| 国产精品毛片久久久久久| 久久精品国产精品亚洲红杏| 欧美性xxxxxxxx| 亚洲三级在线观看| 国产一区二区三区久久久| 欧美高清性hdvideosex| 亚洲男同性视频| av激情综合网| 欧美国产激情二区三区| 麻豆极品一区二区三区| 欧美疯狂性受xxxxx喷水图片| ㊣最新国产の精品bt伙计久久| 国产精品一二三四| 精品久久久久av影院 | 亚洲乱码国产乱码精品精可以看| 懂色av一区二区三区免费看| 国产欧美一区二区精品婷婷| 国产福利一区二区三区在线视频| 精品美女一区二区三区| 久久精品国产亚洲高清剧情介绍| 这里只有精品99re| 免费高清在线视频一区·| 91精品国产免费久久综合| 天堂va蜜桃一区二区三区漫画版| 欧洲激情一区二区| 性做久久久久久免费观看| 欧美视频在线观看一区二区| 亚洲一区二区三区国产| 日韩电影在线一区二区三区| 欧美日本国产视频| 欧美一区二区黄色| 青娱乐精品视频在线| 日韩一级片网址| 日本中文一区二区三区| 欧美一区二区黄| 老色鬼精品视频在线观看播放| 日韩欧美一区电影| 中文字幕字幕中文在线中不卡视频| 国产凹凸在线观看一区二区| 亚洲人成精品久久久久久| 在线观看三级视频欧美| 亚洲成人午夜电影| 欧美一级日韩不卡播放免费| 国产最新精品精品你懂的| 国产日韩欧美综合一区| av中文一区二区三区| 亚洲一区视频在线| 日韩欧美精品在线视频| 久久99日本精品| 国产精品卡一卡二卡三| 色噜噜偷拍精品综合在线| 亚洲免费高清视频在线| 欧美亚洲丝袜传媒另类| 激情综合五月天| 国产精品三级视频|