/// <summary> /// Used to embed connections that don't derive from <see cref="ExternalConnection" />. /// </summary> /// <param name="ctrl"> The control to be embedded in the tab page. </param> protected void Embed(Control ctrl) { ctrl.InvokeIfNecessary(delegate { ctrl.Dock = DockStyle.Fill; this.Controls.Add(ctrl); }); if (this.TerminalTabPage != null) TerminalTabPage.InvokeIfNecessary(delegate { this.TerminalTabPage.Dock = DockStyle.Fill; ctrl.Parent = this.TerminalTabPage; }); }
/// <summary> /// Used to embed connections that derive from <see cref="ExternalConnection" />. /// </summary> /// <param name="hWnd"> The control to be embedded in the tab page. </param> /// <param name="terminalTabPage">The terminal tab page that will be the parent of the external hWnd.</param> private Panel EmbedWindow(IntPtr hWnd, Control terminalTabPage) { lock (EmbedWindowLock) { terminalTabPage.InvokeIfNecessary(() => terminalTabPage.Controls.Clear()); Panel panel = null; terminalTabPage.InvokeIfNecessary(() => { panel = new Panel { Size = new Size(terminalTabPage.Size.Width, terminalTabPage.Size.Height) }; panel.BringToFront(); SetParent(hWnd, panel.Handle); }); SetWindowLong(hWnd, GWL_STYLE, WS_VISIBLE + WS_MAXIMIZE); MoveWindow(hWnd, 0, 0, terminalTabPage.Size.Width, terminalTabPage.Size.Height, true); terminalTabPage.InvokeIfNecessary(() => terminalTabPage.Controls.Add(panel)); return panel; } }