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

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

?? window.c

?? 遠程登陸工具軟件源碼 用于遠程登陸unix
?? C
?? 第 1 頁 / 共 5 頁
字號:
				     SWP_NOACTIVATE | SWP_NOCOPYBITS |
				     SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
				     SWP_FRAMECHANGED);

			init_lvl = 2;
		    }
		}

		/* Oops */
		if (cfg.resize_action == RESIZE_DISABLED && IsZoomed(hwnd)) {
		    force_normal(hwnd);
		    init_lvl = 2;
		}

		set_title(NULL, cfg.wintitle);
		if (IsIconic(hwnd)) {
		    SetWindowText(hwnd,
				  cfg.win_name_always ? window_name :
				  icon_name);
		}

		if (strcmp(cfg.font.name, prev_cfg.font.name) != 0 ||
		    strcmp(cfg.line_codepage, prev_cfg.line_codepage) != 0 ||
		    cfg.font.isbold != prev_cfg.font.isbold ||
		    cfg.font.height != prev_cfg.font.height ||
		    cfg.font.charset != prev_cfg.font.charset ||
		    cfg.vtmode != prev_cfg.vtmode ||
		    cfg.bold_colour != prev_cfg.bold_colour ||
		    cfg.resize_action == RESIZE_DISABLED ||
		    cfg.resize_action == RESIZE_EITHER ||
		    (cfg.resize_action != prev_cfg.resize_action))
		    init_lvl = 2;

		InvalidateRect(hwnd, NULL, TRUE);
		reset_window(init_lvl);
		net_pending_errors();
	    }
	    break;
	  case IDM_COPYALL:
	    term_copyall(term);
	    break;
	  case IDM_PASTE:
	    term_do_paste(term);
	    break;
	  case IDM_CLRSB:
	    term_clrsb(term);
	    break;
	  case IDM_RESET:
	    term_pwron(term);
	    ldisc_send(ldisc, NULL, 0, 0);
	    break;
	  case IDM_ABOUT:
	    showabout(hwnd);
	    break;
	  case IDM_HELP:
	    WinHelp(hwnd, help_path,
                    help_has_contents ? HELP_FINDER : HELP_CONTENTS, 0);
	    break;
	  case SC_MOUSEMENU:
	    /*
	     * We get this if the System menu has been activated
	     * using the mouse.
	     */
	    show_mouseptr(1);
	    break;
          case SC_KEYMENU:
	    /*
	     * We get this if the System menu has been activated
	     * using the keyboard. This might happen from within
	     * TranslateKey, in which case it really wants to be
	     * followed by a `space' character to actually _bring
	     * the menu up_ rather than just sitting there in
	     * `ready to appear' state.
	     */
	    show_mouseptr(1);	       /* make sure pointer is visible */
	    if( lParam == 0 )
		PostMessage(hwnd, WM_CHAR, ' ', 0);
	    break;
	  case IDM_FULLSCREEN:
	    flip_full_screen();
	    break;
	  default:
	    if (wParam >= IDM_SAVED_MIN && wParam <= IDM_SAVED_MAX) {
		SendMessage(hwnd, WM_SYSCOMMAND, IDM_SAVEDSESS, wParam);
	    }
	    if (wParam >= IDM_SPECIAL_MIN && wParam <= IDM_SPECIAL_MAX) {
		int i = (wParam - IDM_SPECIAL_MIN) / 0x10;
		int j;
		/*
		 * Ensure we haven't been sent a bogus SYSCOMMAND
		 * which would cause us to reference invalid memory
		 * and crash. Perhaps I'm just too paranoid here.
		 */
		for (j = 0; j < i; j++)
		    if (!specials || !specials[j].name)
			break;
		if (j == i) {
		    back->special(backhandle, specials[i].code);
		    net_pending_errors();
		}
	    }
	}
	break;

#define X_POS(l) ((int)(short)LOWORD(l))
#define Y_POS(l) ((int)(short)HIWORD(l))

#define TO_CHR_X(x) ((((x)<0 ? (x)-font_width+1 : (x))-offset_width) / font_width)
#define TO_CHR_Y(y) ((((y)<0 ? (y)-font_height+1: (y))-offset_height) / font_height)
      case WM_LBUTTONDOWN:
      case WM_MBUTTONDOWN:
      case WM_RBUTTONDOWN:
      case WM_LBUTTONUP:
      case WM_MBUTTONUP:
      case WM_RBUTTONUP:
	if (message == WM_RBUTTONDOWN &&
	    ((wParam & MK_CONTROL) || (cfg.mouse_is_xterm == 2))) {
	    POINT cursorpos;

	    show_mouseptr(1);	       /* make sure pointer is visible */
	    GetCursorPos(&cursorpos);
	    TrackPopupMenu(popup_menus[CTXMENU].menu,
			   TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON,
			   cursorpos.x, cursorpos.y,
			   0, hwnd, NULL);
	    break;
	}
	{
	    int button, press;

	    switch (message) {
	      case WM_LBUTTONDOWN:
		button = MBT_LEFT;
		press = 1;
		break;
	      case WM_MBUTTONDOWN:
		button = MBT_MIDDLE;
		press = 1;
		break;
	      case WM_RBUTTONDOWN:
		button = MBT_RIGHT;
		press = 1;
		break;
	      case WM_LBUTTONUP:
		button = MBT_LEFT;
		press = 0;
		break;
	      case WM_MBUTTONUP:
		button = MBT_MIDDLE;
		press = 0;
		break;
	      case WM_RBUTTONUP:
		button = MBT_RIGHT;
		press = 0;
		break;
	      default:
		button = press = 0;    /* shouldn't happen */
	    }
	    show_mouseptr(1);
	    /*
	     * Special case: in full-screen mode, if the left
	     * button is clicked in the very top left corner of the
	     * window, we put up the System menu instead of doing
	     * selection.
	     */
	    {
		char mouse_on_hotspot = 0;
		POINT pt;

		GetCursorPos(&pt);
#ifndef NO_MULTIMON
		{
		    HMONITOR mon;
		    MONITORINFO mi;

		    mon = MonitorFromPoint(pt, MONITOR_DEFAULTTONULL);

		    if (mon != NULL) {
			mi.cbSize = sizeof(MONITORINFO);
			GetMonitorInfo(mon, &mi);

			if (mi.rcMonitor.left == pt.x &&
			    mi.rcMonitor.top == pt.y) {
			    mouse_on_hotspot = 1;
			}
			CloseHandle(mon);
		    }
		}
#else
		if (pt.x == 0 && pt.y == 0) {
		    mouse_on_hotspot = 1;
		}
#endif
		if (is_full_screen() && press &&
		    button == MBT_LEFT && mouse_on_hotspot) {
		    SendMessage(hwnd, WM_SYSCOMMAND, SC_MOUSEMENU,
				MAKELPARAM(pt.x, pt.y));
		    return 0;
		}
	    }

	    if (press) {
		click(button,
		      TO_CHR_X(X_POS(lParam)), TO_CHR_Y(Y_POS(lParam)),
		      wParam & MK_SHIFT, wParam & MK_CONTROL,
		      is_alt_pressed());
		SetCapture(hwnd);
	    } else {
		term_mouse(term, button, translate_button(button), MA_RELEASE,
			   TO_CHR_X(X_POS(lParam)),
			   TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
			   wParam & MK_CONTROL, is_alt_pressed());
		ReleaseCapture();
	    }
	}
	return 0;
      case WM_MOUSEMOVE:
	{
	    /*
	     * Windows seems to like to occasionally send MOUSEMOVE
	     * events even if the mouse hasn't moved. Don't unhide
	     * the mouse pointer in this case.
	     */
	    static WPARAM wp = 0;
	    static LPARAM lp = 0;
	    if (wParam != wp || lParam != lp ||
		last_mousemove != WM_MOUSEMOVE) {
		show_mouseptr(1);
		wp = wParam; lp = lParam;
		last_mousemove = WM_MOUSEMOVE;
	    }
	}
	/*
	 * Add the mouse position and message time to the random
	 * number noise.
	 */
	noise_ultralight(lParam);

	if (wParam & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON) &&
	    GetCapture() == hwnd) {
	    Mouse_Button b;
	    if (wParam & MK_LBUTTON)
		b = MBT_LEFT;
	    else if (wParam & MK_MBUTTON)
		b = MBT_MIDDLE;
	    else
		b = MBT_RIGHT;
	    term_mouse(term, b, translate_button(b), MA_DRAG,
		       TO_CHR_X(X_POS(lParam)),
		       TO_CHR_Y(Y_POS(lParam)), wParam & MK_SHIFT,
		       wParam & MK_CONTROL, is_alt_pressed());
	}
	return 0;
      case WM_NCMOUSEMOVE:
	{
	    static WPARAM wp = 0;
	    static LPARAM lp = 0;
	    if (wParam != wp || lParam != lp ||
		last_mousemove != WM_NCMOUSEMOVE) {
		show_mouseptr(1);
		wp = wParam; lp = lParam;
		last_mousemove = WM_NCMOUSEMOVE;
	    }
	}
	noise_ultralight(lParam);
	break;
      case WM_IGNORE_CLIP:
	ignore_clip = wParam;	       /* don't panic on DESTROYCLIPBOARD */
	break;
      case WM_DESTROYCLIPBOARD:
	if (!ignore_clip)
	    term_deselect(term);
	ignore_clip = FALSE;
	return 0;
      case WM_PAINT:
	{
	    PAINTSTRUCT p;
	    HideCaret(hwnd);
	    hdc = BeginPaint(hwnd, &p);
	    if (pal) {
		SelectPalette(hdc, pal, TRUE);
		RealizePalette(hdc);
	    }
	    term_paint(term, hdc, 
		       (p.rcPaint.left-offset_width)/font_width,
		       (p.rcPaint.top-offset_height)/font_height,
		       (p.rcPaint.right-offset_width-1)/font_width,
		       (p.rcPaint.bottom-offset_height-1)/font_height,
		       is_alt_pressed());

	    if (p.fErase ||
	        p.rcPaint.left  < offset_width  ||
		p.rcPaint.top   < offset_height ||
		p.rcPaint.right >= offset_width + font_width*term->cols ||
		p.rcPaint.bottom>= offset_height + font_height*term->rows)
	    {
		HBRUSH fillcolour, oldbrush;
		HPEN   edge, oldpen;
		fillcolour = CreateSolidBrush (
				    colours[(ATTR_DEFBG>>ATTR_BGSHIFT)*2]);
		oldbrush = SelectObject(hdc, fillcolour);
		edge = CreatePen(PS_SOLID, 0, 
				    colours[(ATTR_DEFBG>>ATTR_BGSHIFT)*2]);
		oldpen = SelectObject(hdc, edge);

		/*
		 * Jordan Russell reports that this apparently
		 * ineffectual IntersectClipRect() call masks a
		 * Windows NT/2K bug causing strange display
		 * problems when the PuTTY window is taller than
		 * the primary monitor. It seems harmless enough...
		 */
		IntersectClipRect(hdc,
			p.rcPaint.left, p.rcPaint.top,
			p.rcPaint.right, p.rcPaint.bottom);

		ExcludeClipRect(hdc, 
			offset_width, offset_height,
			offset_width+font_width*term->cols,
			offset_height+font_height*term->rows);

		Rectangle(hdc, p.rcPaint.left, p.rcPaint.top, 
			  p.rcPaint.right, p.rcPaint.bottom);

		// SelectClipRgn(hdc, NULL);

		SelectObject(hdc, oldbrush);
		DeleteObject(fillcolour);
		SelectObject(hdc, oldpen);
		DeleteObject(edge);
	    }
	    SelectObject(hdc, GetStockObject(SYSTEM_FONT));
	    SelectObject(hdc, GetStockObject(WHITE_PEN));
	    EndPaint(hwnd, &p);
	    ShowCaret(hwnd);
	}
	return 0;
      case WM_NETEVENT:
	/* Notice we can get multiple netevents, FD_READ, FD_WRITE etc
	 * but the only one that's likely to try to overload us is FD_READ.
	 * This means buffering just one is fine.
	 */
	if (pending_netevent)
	    enact_pending_netevent();

	pending_netevent = TRUE;
	pend_netevent_wParam = wParam;
	pend_netevent_lParam = lParam;
	if (WSAGETSELECTEVENT(lParam) != FD_READ)
	    enact_pending_netevent();

	time(&last_movement);
	return 0;
      case WM_SETFOCUS:
	term->has_focus = TRUE;
	CreateCaret(hwnd, caretbm, font_width, font_height);
	ShowCaret(hwnd);
	flash_window(0);	       /* stop */
	compose_state = 0;
	term_out(term);
	term_update(term);
	break;
      case WM_KILLFOCUS:
	show_mouseptr(1);
	term->has_focus = FALSE;
	DestroyCaret();
	caret_x = caret_y = -1;	       /* ensure caret is replaced next time */
	term_out(term);
	term_update(term);
	break;
      case WM_ENTERSIZEMOVE:
#ifdef RDB_DEBUG_PATCH
	debug((27, "WM_ENTERSIZEMOVE"));
#endif
	EnableSizeTip(1);
	resizing = TRUE;
	need_backend_resize = FALSE;
	break;
      case WM_EXITSIZEMOVE:
	EnableSizeTip(0);
	resizing = FALSE;
#ifdef RDB_DEBUG_PATCH
	debug((27, "WM_EXITSIZEMOVE"));
#endif
	if (need_backend_resize) {
	    term_size(term, cfg.height, cfg.width, cfg.savelines);
	    InvalidateRect(hwnd, NULL, TRUE);
	}
	break;
      case WM_SIZING:
	/*
	 * This does two jobs:
	 * 1) Keep the sizetip uptodate
	 * 2) Make sure the window size is _stepped_ in units of the font size.
	 */
	if (cfg.resize_action != RESIZE_FONT && !is_alt_pressed()) {
	    int width, height, w, h, ew, eh;
	    LPRECT r = (LPRECT) lParam;

	    if ( !need_backend_resize && cfg.resize_action == RESIZE_EITHER &&
		    (cfg.height != term->rows || cfg.width != term->cols )) {
		/* 
		 * Great! It seems that both the terminal size and the
		 * font size have been changed and the user is now dragging.
		 * 
		 * It will now be difficult to get back to the configured
		 * font size!
		 *
		 * This would be easier but it seems to be too confusing.

		term_size(term, cfg.height, cfg.width, cfg.savelines);
		reset_window(2);
		 */
	        cfg.height=term->rows; cfg.width=term->cols;

		InvalidateRect(hwnd, NULL, TRUE);
		need_backend_resize = TRUE;
	    }

	    width = r->right - r->left - extra_width;
	    height = r->bottom - r->top - extra_height;
	    w = (width + font_width / 2) / font_width;
	    if (w < 1)
		w = 1;
	    h = (height + font_height / 2) / font_height;
	    if (h < 1)
		h = 1;
	    UpdateSizeTip(hwnd, w, h);
	    ew = width - w * font_width;
	    eh = height - h * font_height;
	    if (ew != 0) {
		if (wParam == WMSZ_LEFT ||
		    wParam == WMSZ_BOTTOMLEFT || wParam == WMSZ_TOPLEFT)
		    r->left += ew;
		else
		    r->right -= ew;
	    }
	    if (eh != 0) {
		if (wParam == WMSZ_TOP ||
		    wParam == WMSZ_TOPRIGHT || wParam == WMSZ_TOPLEFT)
		    r->top += eh;
		else
		    r->bottom -= eh;
	    }
	    if (ew || eh)
		return 1;
	    else
		return 0;
	} else {
	    int width, height, w, h, rv = 0;
	    int ex_width = extra_width + (cfg.window_border - offset_width) * 2;
	    int ex_height = extra_height + (cfg.window_border - offset_height) * 2;
	    LPRECT r = (LPRECT) lParam;

	    width = r->right - r->left - ex_width;
	    height = r->bottom - r->top - ex_height;

	    w = (width + term->cols/2)/term->cols;
	    h = (height + term->rows/2)/term->rows;
	    if ( r->right != r->left + w*term->cols + ex_width)
		rv = 1;

	    if (wParam == WMSZ_LEFT ||
		wParam == WMSZ_BOTTOMLEFT || wParam == WMSZ_TOPLEFT)
		r->left = r->right - w*term->cols - ex_width;
	    else
		r->right = r->left + w*term->cols + ex_width;

	    if (r->bottom != r->top + h*term->rows + ex_height)
		rv = 1;

	    if (wParam == WMSZ_TOP ||
		wParam == WMSZ_TOPRIGHT || wParam == WMSZ_TOPLEFT)
		r->top = r->bottom - h*term->rows - ex_height;
	    else
		r->bottom = r->top + h*term->rows 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产精品免费观看视频| 紧缚奴在线一区二区三区| 久久九九99视频| 精品人在线二区三区| 日韩免费一区二区| 欧美不卡在线视频| www国产精品av| 中文字幕不卡一区| 中文字幕色av一区二区三区| 亚洲欧美一区二区久久| 亚洲一区二区三区影院| 亚洲国产婷婷综合在线精品| 日韩和欧美一区二区三区| 麻豆91精品视频| 国产成人午夜精品5599| av中文字幕一区| 欧美高清视频不卡网| 精品播放一区二区| 中文字幕一区二区不卡| 亚洲曰韩产成在线| 国产在线乱码一区二区三区| 日韩视频免费观看高清完整版| 欧美亚洲动漫精品| 日韩欧美在线123| 国产精品久久久久桃色tv| 一区二区三区免费在线观看| 日韩激情av在线| 国产成人午夜精品影院观看视频| 一本色道久久加勒比精品| 91麻豆精品国产91久久久资源速度| 精品国产精品一区二区夜夜嗨| 国产精品毛片大码女人| 亚洲一区中文在线| 丰满放荡岳乱妇91ww| 欧美日韩精品一区二区| 欧美激情艳妇裸体舞| 爽爽淫人综合网网站| 成人av先锋影音| 精品久久99ma| 亚洲夂夂婷婷色拍ww47| 成人h精品动漫一区二区三区| 日韩一区二区视频| 一区二区三区日韩精品视频| 国产精品69毛片高清亚洲| 欧美日韩mp4| 亚洲色图欧洲色图婷婷| 国产91丝袜在线播放九色| 欧美一区二区三区视频在线| 一区二区三区四区av| 粉嫩嫩av羞羞动漫久久久| 日韩手机在线导航| 亚洲电影在线播放| 91精品国产色综合久久ai换脸| 国产精品丝袜久久久久久app| 日韩电影在线观看一区| 欧亚一区二区三区| 亚洲精品国产精品乱码不99| 国产不卡免费视频| 欧美精品一区二区在线观看| 免费视频最近日韩| 欧美日韩精品一区二区三区四区 | 国产精品一区二区男女羞羞无遮挡| 色综合久久中文字幕| 国产精品三级电影| 高清不卡在线观看av| 久久综合狠狠综合久久激情| 久草精品在线观看| 精品捆绑美女sm三区| 美美哒免费高清在线观看视频一区二区| 91精彩视频在线| 亚洲精品亚洲人成人网在线播放| 99精品热视频| 亚洲黄色在线视频| 在线一区二区视频| 亚洲国产精品麻豆| 欧美日本一道本| 免费高清不卡av| 久久只精品国产| 成人一区二区三区视频在线观看 | 色噜噜狠狠成人网p站| 国产精品成人免费| 色综合天天做天天爱| 亚洲人成网站在线| 欧美色爱综合网| 免费日本视频一区| 国产视频一区二区三区在线观看| 国产精品91一区二区| 综合久久国产九一剧情麻豆| 99re这里只有精品首页| 亚洲超碰精品一区二区| 欧美一卡二卡在线观看| 国产91对白在线观看九色| 国产精品女主播在线观看| 色八戒一区二区三区| 日本aⅴ亚洲精品中文乱码| 欧美成人国产一区二区| av色综合久久天堂av综合| 亚洲精品乱码久久久久久久久| 欧美日韩激情一区二区| 精品一区二区在线免费观看| 日本一区二区高清| 精品污污网站免费看| 韩日欧美一区二区三区| 国产精品不卡一区| 欧美一区二区三区白人| 成人一区在线看| 日韩二区三区四区| 亚洲欧洲av在线| 欧美xxxxxxxxx| 色素色在线综合| 国产一区不卡视频| 亚洲国产一区二区视频| 国产色婷婷亚洲99精品小说| 欧美怡红院视频| 成人av中文字幕| 九九精品一区二区| 亚洲宅男天堂在线观看无病毒| 欧美精品一区二区三区蜜桃视频| 日本高清不卡视频| 国产成人鲁色资源国产91色综| 亚洲h精品动漫在线观看| 国产精品美女一区二区| 精品国产sm最大网站免费看| 欧美无砖专区一中文字| jizzjizzjizz欧美| 国产精品一区专区| 久久激情五月婷婷| 婷婷综合另类小说色区| 一区二区三区日韩欧美| 中文字幕一区不卡| 国产日韩v精品一区二区| 日韩欧美二区三区| 8x8x8国产精品| 欧美日韩一区三区| 在线一区二区三区四区五区 | 9191久久久久久久久久久| av在线这里只有精品| 国产成人一区在线| 国产酒店精品激情| 美女视频黄频大全不卡视频在线播放| 尤物在线观看一区| 一区二区三区精品在线观看| 亚洲欧洲韩国日本视频| 国产精品免费久久久久| 国产精品卡一卡二| 最新国产精品久久精品| 亚洲欧美一区二区在线观看| 国产欧美久久久精品影院| 国产亚洲精品中文字幕| 国产午夜一区二区三区| 国产人伦精品一区二区| 久久婷婷成人综合色| www成人在线观看| 国产日韩欧美精品在线| 国产人成亚洲第一网站在线播放| 国产拍欧美日韩视频二区| 国产精品亲子伦对白| 国产精品国产三级国产三级人妇| 国产精品高潮呻吟久久| 亚洲男人的天堂一区二区| 亚洲一区二区在线免费观看视频| 亚洲一区二区三区四区在线观看 | 久久精品视频免费| 国产女同性恋一区二区| 国产精品乱码久久久久久| 中文字幕一区二区三区乱码在线| 亚洲免费在线观看| 亚洲国产精品一区二区www| 日韩av在线发布| 国产一区欧美二区| 成人av在线一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 欧美日韩在线免费视频| 精品免费99久久| 亚洲欧美综合色| 天堂成人免费av电影一区| 国内精品久久久久影院一蜜桃| 国产69精品一区二区亚洲孕妇| 99久久精品久久久久久清纯| 精品视频1区2区| 26uuu精品一区二区在线观看| 亚洲欧洲色图综合| 美女爽到高潮91| 91免费国产视频网站| 69av一区二区三区| 国产精品人人做人人爽人人添| 亚洲成年人网站在线观看| 免费观看在线综合| 99久久免费视频.com| 日韩欧美国产综合在线一区二区三区| 国产日韩欧美a| 日韩高清在线观看| 色综合激情久久| 久久久www成人免费无遮挡大片| 夜夜揉揉日日人人青青一国产精品| 久久国产夜色精品鲁鲁99| 欧美色倩网站大全免费| 国产精品午夜春色av| 久久国产夜色精品鲁鲁99| 欧美色综合网站|