protected void CheckPosition(int helpWindow)
		{
			TraceUtil.WriteLineInfo(this, "Setting position: " + helpWindow);
			// If we have not heard of this window, set its size
			lock (this)
			{
				if (_windowsHash[helpWindow] == null)
				{
					_windowsHash.Add(helpWindow, helpWindow);
					Control c = ObjectBrowserForm.Instance;
					// Get placement (max, min, normal)
					WINDOWPLACEMENT wp = new WINDOWPLACEMENT();
					wp.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));
					Windows.GetWindowPlacement(c.Handle, ref wp);
					// Put the window in normal state if its not
					if (wp.showCmd != Windows.SW_SHOW_NORMAL)
					{
						wp.showCmd = Windows.SW_RESTORE;
						Windows.SetWindowPlacement(c.Handle, ref wp);
					}
					int deskTop = Windows.GetDesktopWindow();
					WINDOWINFO wi = new WINDOWINFO();
					wi.cbSize = Marshal.SizeOf(typeof(WINDOWINFO));
					Windows.GetWindowInfo(deskTop, ref wi);

					Rectangle p = c.Bounds;
					p.X = 0;
					p.Width = (int)wi.rcClient.right / 2;
					c.Bounds = p;
					// Set the size to split the width of the screen
					// between the two windows
					Windows.SetWindowPos(helpWindow,
										 Windows.HWND_TOP,
										 c.Bounds.X + c.Bounds.Width,
										 c.Bounds.Y,
										 wi.rcClient.right - c.Bounds.Width,
										 c.Bounds.Height,
										 0);
				}
			}
		}
Exemple #2
0
		public static extern bool GetWindowPlacement(IntPtr hwnd, ref WINDOWPLACEMENT wp);