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

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

?? hexeditwnd.cpp

?? 這是一個(gè)編輯器 這是一個(gè)編輯器
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
				return FALSE; // ERR

			// autosel next pair
			if (pp->x - uxCurPair - 2*uFontWidth > uFontWidth / 2)
			{
				++uPair;
				uxCurPair += DIGIT_PAIR_WIDTH;
			}
		}

		// out of range?
		if (IsOutOfRange(stat.dwCurOffset + uLine * 16 + uPair))
			return FALSE; // ERR		

		// x -> LOWORD ?
		ppos->bHiword = ((UINT)pp->x > uxCurPair + uFontWidth) ? FALSE: TRUE;

		// save offset
		ppos->dwOffset = stat.dwCurOffset + uLine * 16 + uPair;
		
		return TRUE; // OK
	}
	// in text field ?
	else if ((DWORD)pp->x >= CHARS_X &&
		     (DWORD)pp->x <  CHARS_X + uFontWidth * 16 &&
			 //(DWORD)pp->y < uMaxLines * uFontHeight + iyHETop)
			 (DWORD)pp->y >= iyHETop &&
			 (DWORD)pp->y <  iyHETop + uMaxLines * uFontHeight)
	{
		uLine =  ((DWORD)pp->y - iyHETop) / uFontHeight;
		uPair =  (UINT)pp->x - CHARS_X;
		uPair /= uFontWidth;

		// out of range?
		if (IsOutOfRange(stat.dwCurOffset + uLine * 16 + uPair))
			return FALSE; // ERR

		// build output
		ppos->bTextSection = TRUE;
		ppos->bHiword      = TRUE;
		ppos->dwOffset     = stat.dwCurOffset + uLine * 16 + uPair;

		return TRUE; // OK
	}
	else
		return FALSE; // ERR
}

//
// cursor key,... handling
//
BOOL HexEditWnd::HEHandleWM_KEYDOWN(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	HE_POS  posNew;
	int     iNewLine;
	DWORD   dwOff;

	// caret already set
	if (!stat.bCaretPosValid)
		return FALSE; // ERR

	//
	// handle special keys
	//

	// tab key
	switch(wParam)
	{
	case VK_TAB:
		// switch between text/data fields
		if (stat.bCaret)
		{
			// kill sel
			if (stat.bSel)
				KillSelection();

			// reset caret
			stat.posCaret.bTextSection ^= TRUE;
			stat.posCaret.bHiword       = TRUE;
			SetCaret();

			// make visible if is not
			if (!IsOffsetVisible(stat.posCaret.dwOffset))
				SetTopLine();

			return TRUE; // OK
		}
		else
			return FALSE; // ERR
	}

	// shift key
	if ( IsKeyDown(VK_SHIFT) )
	{
		posNew = stat.posCaret;
		switch(wParam)
		{
		case VK_LEFT:    // left
			posNew.dwOffset--;
			break;

		case VK_RIGHT:   // right
			posNew.dwOffset++;
			break;

		case VK_NEXT:    // page down
			posNew.dwOffset += uMaxLines * 16;
			break;

		case VK_PRIOR:   // page up
			posNew.dwOffset -= uMaxLines * 16;
			break;

		case VK_DOWN:    // down
			posNew.dwOffset += 16;
			break;

		case VK_UP:      // up
			posNew.dwOffset -= 16;
			break;

		default:
			return FALSE; // ERR
		}

		// validate
		if (ValidatePos(&posNew))
			Beep();

		if (stat.bSel)
		{
			if (stat.dwOffSelStart == stat.posCaret.dwOffset)
				dwOff = stat.dwOffSelEnd;
			else
				dwOff = stat.dwOffSelStart;

			SetSelection( dwOff, posNew.dwOffset);
		}
		else
			SetSelection( stat.posCaret.dwOffset, posNew.dwOffset );

		SetCaret(&posNew);
		MakeCaretVisible();

		return TRUE; // OK
	}

	//
	// move caret in HE area / move current line
	//
	posNew    = stat.posCaret;
	iNewLine  = GetCurrentLine();
	switch(wParam)
	{
	case VK_NEXT:    // page down
		posNew.dwOffset += uMaxLines * 16;
		iNewLine += uMaxLines;
		break;

	case VK_PRIOR:   // page up
		posNew.dwOffset -= uMaxLines * 16;
		iNewLine -= uMaxLines;
		break;

	case VK_DOWN:    // down
		posNew.dwOffset += 16;
		++iNewLine;
		break;

	case VK_UP:      // up
		posNew.dwOffset -= 16;
		--iNewLine;
		break;

	case VK_RIGHT:   // rigth
		if (stat.posCaret.bTextSection)
		{
			++posNew.dwOffset;
			posNew.bHiword = TRUE;
		}
		else
		{
			posNew.bHiword ^= 1;	
			if (!stat.posCaret.bHiword)
				++posNew.dwOffset;
		}
		break;

	case VK_LEFT:    // left
		if (stat.posCaret.bTextSection)
		{
			--posNew.dwOffset;
			posNew.bHiword = TRUE;
		}
		else
		{
			posNew.bHiword ^= 1;
			if (stat.posCaret.bHiword)
				--posNew.dwOffset;
		}
		break;

	case VK_BACK:
		if (stat.posCaret.bTextSection)
			--posNew.dwOffset;
		break;

	default:
		return FALSE; // ERR
	}

	// changes -> GUI
	if (stat.bSel &&
		wParam != VK_RIGHT && 
		wParam != VK_LEFT)
	{
		// validate
		if (ValidateLine(&iNewLine))
			Beep();

		// set
		SetCurrentLine(iNewLine);
	}
	else
	{
		// validate
		if (ValidatePos(&posNew))
			Beep();

		// set
		KillSelection();
		SetCaret(&posNew);
		MakeCaretVisible();
	}

	return TRUE; // OK
}

//
// if caret isn't in the visible area, the top line is reset
//
// returns:
// whether it was needed to reset the top line
//
BOOL HexEditWnd::MakeCaretVisible()
{
	DWORD dwLastVisibleOff;

	if (IsOffsetVisible(stat.posCaret.dwOffset))
		return FALSE; // ERR

	dwLastVisibleOff = __min(uMaxLines * 16 + stat.dwCurOffset,
		                     diData.dwSize);
	if (stat.posCaret.dwOffset < stat.dwCurOffset) // caret above ?
		SetTopLine((int)(stat.posCaret.dwOffset / 16));
	else // caret below
		SetTopLine((int)(stat.posCaret.dwOffset / 16 - uMaxLines + 1));

	return TRUE; // OK
}

//
// corrects the information in a given HE_POS structure if it's out of range
//
// returns:
// whether sth was fixed
//
BOOL HexEditWnd::ValidatePos(PHE_POS ppos)
{
	if ((int)ppos->dwOffset < 0)
	{
		ppos->dwOffset = 0;
		ppos->bHiword  = TRUE;
		return TRUE; // OK
	}
	else if (ppos->dwOffset >= diData.dwSize)
	{
		ppos->dwOffset = diData.dwSize - 1;
		ppos->bHiword  = FALSE;
		return TRUE; // OK
	}
	else
		return FALSE; // ERR
}

//
// returns:
// last caret status
//
BOOL HexEditWnd::SetCaretSet(BOOL bSet)
{
	BOOL bRet;

	bRet = stat.bCaret;
	stat.bCaret = bSet;

	return bRet;
}

//
// set the V scrollbar range relative to "diData.dwSize"
//
void HexEditWnd::SetupVScrollbar()
{
	DWORD dwTotalLines = GetTotalLineNum();

	SetScrollRange(hMainWnd, SB_VERT, 0, (int)(dwTotalLines - 1), TRUE);

	return;
}

UINT HexEditWnd::GetTotalLineNum()
{
	DWORD dwTotalLines;

	dwTotalLines = diData.dwSize / 16;
	if (diData.dwSize % 16)
		++dwTotalLines;

	return dwTotalLines;
}

//
// handles V scrollbar movement
//
BOOL HexEditWnd::HEHandleWM_VSCROLL(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	int          nPos;
	SCROLLINFO   scrollinfo = { sizeof(SCROLLINFO) };

	nPos = GetScrollPos(hWnd, SB_VERT);

	switch(LOWORD(wParam))
	{
	case SB_THUMBPOSITION:
	case SB_THUMBTRACK:
		// get the tracking position
		scrollinfo.fMask = SIF_TRACKPOS;
		GetScrollInfo(hWnd, SB_VERT, &scrollinfo);
		nPos = scrollinfo.nTrackPos;
		break;

	case SB_TOP:
		nPos = 0;
		break;

	case SB_BOTTOM:
		nPos = GetTotalLineNum() - 1;
		break;

	case SB_LINEDOWN:
		++nPos;
		break;

	case SB_LINEUP:
		--nPos;
		break;

	case SB_PAGEDOWN:
		nPos += uMaxLines;		
		break;

	case SB_PAGEUP:
		nPos -= uMaxLines;
		break;		
	}

	return SetTopLine((int)nPos);
}

//
// sets the line to the top of the visible data range
//
BOOL HexEditWnd::SetTopLine(int iNewLine)
{
	int nNewPos;

	nNewPos = iNewLine;

	// validation
	if (nNewPos < 0)
		nNewPos = 0;
	nNewPos = __min(nNewPos, (int)GetTotalLineNum() - 1);

	// avoid repainting ?
	if (nNewPos == stat.iLastLine)
		return TRUE; // OK

	// set new line
	SetScrollPos(hMainWnd, SB_VERT, nNewPos, TRUE);
	stat.iLastLine = nNewPos;

	// set new offset
	stat.dwCurOffset = nNewPos * 16;

	// reset caret
	if (stat.bCaretPosValid)
		SetCaret();

	// repaint
	RepaintClientArea();

	return TRUE; // OK
}

//
// overloaded
//
BOOL HexEditWnd::SetTopLine(DWORD dwOffset)
{
	return SetTopLine( (int)dwOffset / 16);
}

//
// overloaded
//
BOOL HexEditWnd::SetTopLine()
{
	return SetTopLine((DWORD)stat.posCaret.dwOffset);
}

void HexEditWnd::RepaintClientArea()
{
	InvalidateRect(hMainWnd, NULL, FALSE);

	return;
}

void HexEditWnd::RepaintClientAreaNow()
{
	RepaintClientArea();
	UpdateWindow(hMainWnd);

	return;
}

void HexEditWnd::HEHandleWM_MOUSEWHEEL(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	int         nPos;
	short int   iDelta;

	iDelta = (int)HIWORD(wParam);
	nPos = GetScrollPos(hWnd, SB_VERT);
	if (iDelta > 0)
	{
		// move up	
		nPos -= WHEEL_MOVE_STEPS;
	}
	else
	{
		// move down
		nPos += WHEEL_MOVE_STEPS;
	}

	SetTopLine((int)nPos);

	return;
}

void HexEditWnd::HEHandleWM_SHOWWINDOW(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	HEdit.HESetFont(HEdit.hFont);
	SetupVScrollbar();
	ConfigureTB();
	SetHEWndCaption();

	return;
}

void HexEditWnd::Beep()
{
	MessageBeep(MB_ICONEXCLAMATION);

	return;
}

BOOL HexEditWnd::HEHandleWM_COMMAND(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(LOWORD(wParam))
	{
	case TB_GOTO:
		if (DialogBoxParam(	GetInstance(), (PSTR)IDD_GOTO, hWnd, GotoDlgProc, 0) &&
			stat.bCaretPosValid)
		{
			SetTopLine();
			SetCaret(&stat.posCaret);
		}
		return TRUE;

	case TB_SELBLOCK:
		DialogBoxParam( GetInstance(), (PSTR)IDD_SELBLOCK, hWnd, SelBlockDlgProc, 0);
		return TRUE;

	case TB_SELALL:
		SelectAll();
		return TRUE;

	case TB_SEARCH:
		DialogBoxParam( GetInstance(), (PSTR)IDD_SEARCH, hWnd, SearchDlgProc, 0);
		return TRUE;

	case TB_SEARCHDOWN:
	case TB_SEARCHUP:
		PerformSearchAgain(&search, LOWORD(wParam) == TB_SEARCHDOWN ? TRUE : FALSE);
		return TRUE;

	case TB_WIN2TOP:
		SetHEWnd2Top( bHEOnTop ^ 1 );
		ConfigureTB();
		return TRUE;

	case TB_SAVE:
		SaveChanges();
		return TRUE;

	case TB_UNDO:
		UndoChanges();
		return TRUE;

	case TB_CUT:
		CutSelectedBlock();
		return TRUE;
		
	case TB_COPY:
		CopySelectedBlock();
		return TRUE;

	case TB_PASTE:
		PasteBlockFromCB();
		return TRUE;

	case TB_ABOUT:
		ShowAbout();
		return TRUE;

	case TB_CLOSE:
		HEditQuit();
		return TRUE;

	//
	// tray menu commands (IDT_XXX)
	//
	case IDT_RESTORE:
		HEditReturnFromTray();
		return TRUE;

	case IDT_EXIT:
		HEditKillTrayIcon();
		HEditQuit();
		return TRUE;
	}

	return FALSE; // ERR
}

BOOL HexEditWnd::HEHandleWM_NOTIFY(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	//
	// offer TB tooltips
	//
	if (((LPNMHDR)lParam)->code == TTN_NEEDTEXT)
	{
		switch(((LPNMHDR) lParam)->idFrom)
		{
		case TB_SAVE:
			((LPTOOLTIPTEXT)lParam)->lpszText = "save changes  ( STR+S )";
			return TRUE;

		case TB_UNDO:
			((LPTOOLTIPTEXT)lParam)->lpszText = "undo all unsaved changes  ( STR+Z )";
			return TRUE;

		case TB_GOTO:
			((LPTOOLTIPTEXT)lParam)->lpszText = "goto offset  ( STR+G )";
			return TRUE;

		case TB_SELBLOCK:
			((LPTOOLTIPTEXT)lParam)->lpszText = "select block  ( STR+B )";
			return TRUE;
			
		case TB_SELALL:
			if ( IsAllSelected() )
				((LPTOOLTIPTEXT)lParam)->lpszText = "deselect all  ( STR+A )";
			else
				((LPTOOLTIPTEXT)lParam)->lpszText = "select all  ( STR+A )";
			return TRUE;

		case TB_SEARCH:
			((LPTOOLTIPTEXT)lParam)->lpszText = "search  ( STR+F )";
			return TRUE;

		case TB_SEARCHDOWN:
			((LPTOOLTIPTEXT)lParam)->lpszText = "search down again  ( ALT+D )";
			return TRUE;

		case TB_SEARCHUP:
			((LPTOOLTIPTEXT)lParam)->lpszText = "search up again  ( ALT+U )";
			return TRUE;

		case TB_CUT:
			((LPTOOLTIPTEXT)lParam)->lpszText = "cut into clipboard  ( STR+X )";
			return TRUE;

		case TB_COPY:
			((LPTOOLTIPTEXT)lParam)->lpszText = "copy to clipboard  ( STR+C )";
			return TRUE;

		case TB_PASTE:
			((LPTOOLTIPTEXT)lParam)->lpszText = "paste from clipboard  ( STR+V )";
			return TRUE;

		case TB_WIN2TOP:
			((LPTOOLTIPTEXT)lParam)->lpszText =
				bHEOnTop ? "set window state to non-top" : "set window state to top  ( STR+T )";
			return TRUE;

		case TB_ABOUT:
			((LPTOOLTIPTEXT)lParam)->lpszText = "about  ( F12 )";
			return TRUE;

		case TB_CLOSE:
			((LPTOOLTIPTEXT)lParam)->lpszText = "close this window  ( ESC )";
			return TRUE;
		}
	}

	return FALSE; // ERR
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区成人| 亚洲欧美区自拍先锋| 在线观看视频欧美| 91福利视频久久久久| 91麻豆swag| 欧美三级三级三级| 精品成人一区二区| 国产精品久久久久婷婷| 一区二区三区在线免费播放| 亚洲激情成人在线| 99re在线视频这里只有精品| 99久久精品一区| 欧美日韩在线免费视频| 国产精品三级电影| 久久精品国产在热久久| 91网站最新地址| 在线精品视频免费播放| 99久久夜色精品国产网站| 91麻豆国产精品久久| 精品盗摄一区二区三区| 精品在线观看视频| 国产精品欧美一区二区三区| 69堂国产成人免费视频| 久久精品亚洲国产奇米99| 亚洲一区二区成人在线观看| 国产综合色视频| 色妹子一区二区| 亚洲精品一区二区三区香蕉 | 久久精品99国产精品| 国产91精品一区二区麻豆网站 | 亚洲乱码一区二区三区在线观看| 天天影视涩香欲综合网| 成人午夜av电影| 欧美福利一区二区| 亚洲欧美激情视频在线观看一区二区三区 | 美国一区二区三区在线播放| 99精品视频一区二区三区| 欧美一卡二卡三卡| 亚洲精品视频免费看| 国产在线乱码一区二区三区| 在线精品视频免费播放| 国产精品色哟哟| 国产综合色产在线精品| 欧美探花视频资源| 日韩美女视频19| 国产精品一二三四| 日韩三级在线免费观看| 一区二区三国产精华液| 粉嫩高潮美女一区二区三区| 精品国产污污免费网站入口| 午夜在线成人av| 日本精品视频一区二区三区| 国产欧美精品一区二区三区四区| 奇米影视在线99精品| 一本大道久久a久久综合婷婷| 久久精品一区二区三区不卡牛牛| 日本不卡在线视频| 欧美伊人精品成人久久综合97 | 99re这里只有精品首页| 久久久国产午夜精品| 美女免费视频一区| 91麻豆精品国产无毒不卡在线观看| 亚洲制服丝袜一区| 91香蕉视频mp4| 亚洲人成人一区二区在线观看| 国产精品一区二区视频| ww亚洲ww在线观看国产| 久久精品国产99国产| 91精品国产欧美一区二区18| 亚洲成a人v欧美综合天堂下载| 在线视频一区二区免费| 亚洲你懂的在线视频| 91麻豆视频网站| 亚洲男帅同性gay1069| 99久久综合国产精品| **性色生活片久久毛片| 99久久久精品| 《视频一区视频二区| 色视频一区二区| 一区二区三区成人| 欧美视频在线不卡| 视频一区欧美精品| 日韩亚洲欧美综合| 麻豆久久一区二区| 26uuu国产在线精品一区二区| 久久电影网站中文字幕| 精品国产自在久精品国产| 国产一区二区视频在线播放| 久久久亚洲精品石原莉奈| 国产精品亚洲视频| 国产欧美日本一区二区三区| 国产69精品久久久久毛片| 国产精品免费人成网站| 色婷婷一区二区| 亚洲h精品动漫在线观看| 欧美丰满嫩嫩电影| 精品一二线国产| 国产午夜精品一区二区三区嫩草 | 日本在线播放一区二区三区| 日韩欧美久久久| 国产裸体歌舞团一区二区| 亚洲国产岛国毛片在线| 91原创在线视频| 亚洲一级二级三级在线免费观看| 欧美肥妇毛茸茸| 国产福利视频一区二区三区| 国产精品女同互慰在线看| 91麻豆视频网站| 日本少妇一区二区| 久久精品人人做人人爽人人| 成人sese在线| 五月天亚洲婷婷| 久久网站热最新地址| 成人动漫视频在线| 亚洲国产成人91porn| 精品国产123| 99re在线精品| 蜜桃av噜噜一区二区三区小说| 2017欧美狠狠色| 91丨九色丨蝌蚪丨老版| 日韩电影网1区2区| 国产欧美1区2区3区| 色婷婷综合五月| 久久成人麻豆午夜电影| 亚洲国产精华液网站w | 蜜臀久久99精品久久久久宅男| 久久久精品天堂| 欧洲av在线精品| 国产剧情av麻豆香蕉精品| 亚洲精品免费一二三区| 欧美成人精品3d动漫h| 9人人澡人人爽人人精品| 日韩电影在线观看电影| 国产精品视频yy9299一区| 欧美一区二区三区精品| 99久久婷婷国产综合精品电影 | 欧美一区二区美女| 成人国产在线观看| 捆绑调教一区二区三区| 亚洲日本一区二区| 久久久久久久久久久电影| 欧美日韩成人综合天天影院| 成人影视亚洲图片在线| 美女一区二区在线观看| 亚洲资源中文字幕| 日本一区免费视频| 日韩欧美久久一区| 欧美午夜电影网| www.日韩av| 国产不卡一区视频| 日本欧美一区二区| 亚洲影院久久精品| 成人欧美一区二区三区白人| 亚洲精品在线免费观看视频| 欧美日韩国产天堂| 91在线porny国产在线看| 国产精品中文字幕一区二区三区| 日韩国产高清影视| 一个色在线综合| 国产精品久久99| 国产亚洲欧美一级| 欧美大尺度电影在线| 欧美精品欧美精品系列| 91香蕉视频污| 99re成人精品视频| 丰满放荡岳乱妇91ww| 国内久久婷婷综合| 麻豆中文一区二区| 日本免费在线视频不卡一不卡二 | 欧美猛男男办公室激情| 91在线免费看| 不卡影院免费观看| 国产**成人网毛片九色| 国产一区999| 国产综合一区二区| 激情深爱一区二区| 国内不卡的二区三区中文字幕| 男男视频亚洲欧美| 免费在线观看成人| 日韩av在线发布| 轻轻草成人在线| 日韩福利电影在线| 日韩不卡一区二区| 美女视频一区二区| 秋霞电影一区二区| 麻豆成人av在线| 蜜桃一区二区三区在线| 久久99久久精品| 久久超级碰视频| 国产在线精品一区二区| 国产美女久久久久| 丁香婷婷深情五月亚洲| 成人一区在线看| 91一区二区在线观看| 色综合久久久久| 欧美午夜宅男影院| 欧美高清www午色夜在线视频| 欧美一区日本一区韩国一区| 日韩色在线观看| 久久九九影视网|