⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewsp.cs

📁 一个远程终端软件的源码
💻 CS
📖 第 1 页 / 共 2 页
字号:
          switch(connOpts.ViewOpts.Orientation)
          {
            case Orientation.Landscape90:
              inputBox.Location = new Point(ClientRectangle.Width - inputBox.Width, 0);
              break;
            case Orientation.Portrait180:
              inputBox.Location = new Point(0, 0);
              break;
            case Orientation.Landscape270:
              inputBox.Location = new Point(0, ClientRectangle.Height - inputBox.Height);
              break;
            default:
              inputBox.Location = new Point(ClientRectangle.Width - inputBox.Width, ClientRectangle.Height - inputBox.Height);
              break;
          }
          inputBox.Visible = true;
          inputBox.Enabled = true;
          inputBox.Focus();
          break;
      }
    }

    protected override void OnKeyUp(KeyEventArgs e)
    {
      base.OnKeyUp(e);
      if(e.Handled)
        return;

      if(timer.Enabled)
        CancelExitFullScrn();

      switch(e.KeyCode)
      {
        case Keys.F1:
          leftBtnDown = false;
          if(isSetSingleWinPending)
            SetSingleWin(mouseX, mouseY);
          else
            OnMouseEvent(mouseX, mouseY, leftBtnDown, rightBtnDown);
          break;
        case Keys.F2:
          rightBtnDown = false;
          if(isSetSingleWinPending)
            SetSingleWin(mouseX, mouseY);
          else
            OnMouseEvent(mouseX, mouseY, leftBtnDown, rightBtnDown);
          break;
        case Keys.P:
        case Keys.Q:
          if(!(e.Shift ^ IsCapsLocked()))
          {
            char c = (e.KeyCode == Keys.P) ? 'p' : 'q';
            // Fixing a problem for Smartphones with Qwerty keyboards.
            KeyPressEventArgs eventArgs = new KeyPressEventArgs(c);
            OnKeyPress(eventArgs);
          }
          break;
      }
    }

    protected override void OnKeyPress(KeyPressEventArgs e)
    {
      if(e.Handled)
        return;

      // On a Smartphone, this means the back soft key.
      // Let's treat it as a backspace instead.
      if(e.KeyChar == (char)Keys.Escape)
      {
        e.Handled = true; // Set Handled to true will stop the Smartphone from going to another form.
        e = new KeyPressEventArgs('\b');
      }

      base.OnKeyPress(e);
    }

    private void ResetInputTimer()
    {
      // TODO: Which of the following statements are need to reset the timer?
      inputTimer.Enabled = false;
      inputTimer.Interval = 0;
      inputTimer.Interval = InputDelta;
      inputTimer.Enabled = true;
    }

    private void OnInputKeyDown(object sender, KeyEventArgs e)
    {
      if(e.Handled)
        return;

      // We don't enable the inputTimer until we get a KeyPress or KeyUp.
      inputTimer.Enabled = false;
      OnKeyEvent(e.KeyCode, true);
    }

    private void OnInputKeyUp(object sender, KeyEventArgs e)
    {
      if(e.Handled)
        return;

      ResetInputTimer();
      if(e.KeyCode != Keys.F8) // Equals F8 after we just opened the text box.
        OnKeyEvent(e.KeyCode, false);
    }

    private void OnInputKeyPress(object sender, KeyPressEventArgs e)
    {
      if(e.Handled)
        return;

      ResetInputTimer();
      OnKeyPress(e);
    }

    private void OnInputTextChanged(object sender, EventArgs e)
    {
      if(inputBox.TextLength > 0)
        inputBox.Text = String.Empty;
    }

    private void ResetMouseIdleTimer()
    {
      // TODO: Which of the following statements are need to reset the timer?
      mouseIdleTimer.Enabled = false;
      mouseIdleTimer.Interval = 0;
      mouseIdleTimer.Interval = MouseIdleDelta;
      mouseIdleTimer.Enabled = true;
    }

    private void MouseIdleTicked(object sender, EventArgs e)
    {
      OnMouseEvent(mouseX, mouseY, leftBtnDown, rightBtnDown);
      mouseIdleTimer.Enabled = false; // If the cursor moves again, the timer will start again.
    }

    private void SendMouseLocWhenIdleClicked(object sender, EventArgs e)
    {
      connOpts.ViewOpts.SendMouseLocWhenIdle = !connOpts.ViewOpts.SendMouseLocWhenIdle;
      for(int i = 0; i < optionsMenu.MenuItems.Count; i++)
      {
        MenuItem item = optionsMenu.MenuItems[i];
        if(item.Text == App.GetStr("Send mouse location when idle"))
          item.Checked = connOpts.ViewOpts.SendMouseLocWhenIdle;
      }

      if(connOpts.ViewOpts.SendMouseLocWhenIdle)
        ResetMouseIdleTimer();
      else
        mouseIdleTimer.Enabled = false;
    }

    private void MouseAccelModeClicked(object sender, EventArgs e)
    {
      for(int i = 0; i < mouseAccelModeMenu.MenuItems.Count; i++)
        mouseAccelModeMenu.MenuItems[i].Checked = false;
      MenuItem item = (MenuItem)sender;
      item.Checked = true;
      if(item == mouseAccelModeMenu.MenuItems[0])
      {
        connOpts.ViewOpts.MouseAccelMode = true;
        connOpts.ViewOpts.MouseSpeed = MouseSpeed.Normal;
      }
      else if(item == mouseAccelModeMenu.MenuItems[1])
      {
        connOpts.ViewOpts.MouseAccelMode = false;
        connOpts.ViewOpts.MouseSpeed = MouseSpeed.Low;
      }
      else if(item == mouseAccelModeMenu.MenuItems[2])
      {
        connOpts.ViewOpts.MouseAccelMode = false;
        connOpts.ViewOpts.MouseSpeed = MouseSpeed.Normal;
      }
      else if(item == mouseAccelModeMenu.MenuItems[3])
      {
        connOpts.ViewOpts.MouseAccelMode = false;
        connOpts.ViewOpts.MouseSpeed = MouseSpeed.High;
      }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
      base.OnPaint(e);

      Rectangle rect = new Rectangle();
      rect.X = mouseX - BigCircleRadius / 2;
      rect.Y = mouseY - BigCircleRadius / 2;
      rect.Width = BigCircleRadius - 1;
      rect.Height = BigCircleRadius - 1;
      if(!e.ClipRectangle.IntersectsWith(rect))
        return;

      Graphics graphics = e.Graphics;
      viewPen.Color = App.Red;
      graphics.DrawLine(viewPen, rect.Left, mouseY, rect.Right , mouseY);
      graphics.DrawLine(viewPen, mouseX, rect.Top, mouseX, rect.Bottom);
    }

    protected override void OnClosed(EventArgs e)
    {
      base.OnClosed(e);
      cursorTimer.Enabled = false;
      inputTimer.Enabled = false;
      mouseIdleTimer.Enabled = false;
    }

    internal ViewSp(Conn conn, ConnOpts connOpts, UInt16 width, UInt16 height) : base(conn, connOpts, width, height)
    {
      mouseAccelModeHdr = new EventHandler(MouseAccelModeClicked);

      MenuItem item;
      MenuItem subItem;

      item = new MenuItem();
      item.Text = App.GetStr("Left click");
      item.Click += new EventHandler(LeftClicked);
      menu.MenuItems.Add(item);
      item = new MenuItem();
      item.Text = App.GetStr("Menu");
      menu.MenuItems.Add(item);

      subItem = new MenuItem();
      subItem.Text = App.GetStr("Right click");
      subItem.Click += new EventHandler(RightClicked);
      item.MenuItems.Add(subItem);
      subItem = new MenuItem();
      subItem.Text = "-";
      item.MenuItems.Add(subItem);
      item.MenuItems.Add(connMenu);
      connMenu.MenuItems.Add(newConnItem);
      connMenu.MenuItems.Add(refreshItem);
      item.MenuItems.Add(viewMenu);
      item.MenuItems.Add(keysMenu);
      item.MenuItems.Add(optionsMenu);
      subItem = new MenuItem();
      subItem.Text = App.GetStr("Send mouse location when idle");
      subItem.Checked = connOpts.ViewOpts.SendMouseLocWhenIdle;
      subItem.Click += new EventHandler(SendMouseLocWhenIdleClicked);
      optionsMenu.MenuItems.Add(subItem);
      mouseAccelModeMenu.Text = App.GetStr("Mouse speed");
      optionsMenu.MenuItems.Add(mouseAccelModeMenu);
      subItem = new MenuItem();
      subItem.Text = App.GetStr("Acceleration on");
      subItem.Checked = connOpts.ViewOpts.MouseAccelMode;
      subItem.Click += mouseAccelModeHdr;
      mouseAccelModeMenu.MenuItems.Add(subItem);
      subItem = new MenuItem();
      subItem.Text = App.GetStr("Low");
      subItem.Checked = !connOpts.ViewOpts.MouseAccelMode && (connOpts.ViewOpts.MouseSpeed == MouseSpeed.Low);
      subItem.Click += mouseAccelModeHdr;
      mouseAccelModeMenu.MenuItems.Add(subItem);
      subItem = new MenuItem();
      subItem.Text = App.GetStr("Normal");
      subItem.Checked = !connOpts.ViewOpts.MouseAccelMode && (connOpts.ViewOpts.MouseSpeed == MouseSpeed.Normal);
      subItem.Click += mouseAccelModeHdr;
      mouseAccelModeMenu.MenuItems.Add(subItem);
      subItem = new MenuItem();
      subItem.Text = App.GetStr("High");
      subItem.Checked = !connOpts.ViewOpts.MouseAccelMode && (connOpts.ViewOpts.MouseSpeed == MouseSpeed.High);
      subItem.Click += mouseAccelModeHdr;
      mouseAccelModeMenu.MenuItems.Add(subItem);
      subItem = new MenuItem();
      subItem.Text = "-";
      item.MenuItems.Add(subItem);
      item.MenuItems.Add(aboutItem);
      item.MenuItems.Add(closeConnItem);

      cursorTimer.Tick += new EventHandler(CursorTicked);
      cursorTimer.Interval = CursorDelta;
      cursorTimer.Enabled = true;

      mouseIdleTimer.Tick += new EventHandler(MouseIdleTicked);
      mouseIdleTimer.Interval = MouseIdleDelta;
      mouseIdleTimer.Enabled = connOpts.ViewOpts.SendMouseLocWhenIdle;

      Graphics graphics = CreateGraphics();

      inputTimer.Tick += new EventHandler(InputTicked);
      inputTimer.Interval = InputDelta;
      inputBox.Enabled = false;
      inputBox.Visible = false;
      inputBox.MaxLength = 1;
      inputBox.Size = graphics.MeasureString("M", Font).ToSize(); // M should be the widest character
      inputBox.Width += App.DialogSpacing; // Give the textbox some more space.
      inputBox.TextChanged += new EventHandler(OnInputTextChanged);
      inputBox.KeyDown += new KeyEventHandler(OnInputKeyDown);
      inputBox.KeyUp += new KeyEventHandler(OnInputKeyUp);
      inputBox.KeyPress += new KeyPressEventHandler(OnInputKeyPress);
      Controls.Add(inputBox);

      graphics.Dispose();
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -