private void WmNCLButtonDown(ref Message msg)
        {
            Point pt = this.PointToWindow(new Point(msg.LParam.ToInt32()));
            NonClientMouseEventArgs args = new NonClientMouseEventArgs(
                MouseButtons.Left, 1, pt.X, pt.Y, 0, msg.WParam.ToInt32());

            OnNonClientMouseDown(args);
            if (!args.Handled)
            {
                DefWndProc(ref msg);
            }
            msg.Result = NativeMethods.TRUE;
        }
		protected override void OnNonClientMouseDown(NonClientMouseEventArgs args)
		{
			if (args.Button != MouseButtons.Left)
				return;

			switch (args.HitTest)
			{
				case (int)NativeMethods.NCHITTEST.HTCLOSE:
					{
						//NativeMethods.POINT pt = NativeMethods.POINT.FromPoint(args.Location);
						if (DepressButton(closeButton))
							NativeMethods.SendMessage(this.Handle,
								(int)NativeMethods.WindowMessages.WM_SYSCOMMAND,
								(IntPtr)NativeMethods.SystemCommands.SC_CLOSE, IntPtr.Zero);
						args.Handled = true;
						break;
					}
				case (int)NativeMethods.NCHITTEST.HTMINBUTTON:
					{
				//		NativeMethods.POINT pt = NativeMethods.POINT.FromPoint(args.Location);
						if (DepressButton(minimizeButton))
							NativeMethods.SendMessage(this.Handle,
								(int)NativeMethods.WindowMessages.WM_SYSCOMMAND,
								(IntPtr)NativeMethods.SystemCommands.SC_MINIMIZE, IntPtr.Zero);
						args.Handled = true;
						break;
					}
				case (int)NativeMethods.NCHITTEST.HTMAXBUTTON:
					{
						if (DepressButton(maximizeButton)) 
						{
							int sc = (WindowState == FormWindowState.Maximized)?
								(int)NativeMethods.SystemCommands.SC_RESTORE : (int)NativeMethods.SystemCommands.SC_MAXIMIZE;

							NativeMethods.SendMessage(this.Handle,
								(int)NativeMethods.WindowMessages.WM_SYSCOMMAND,
								(IntPtr)sc, IntPtr.Zero);
						}
						args.Handled = true;
						break;
					}
			}

			//TODO: handle other buttons if exist
		}
 /// <summary>
 /// Called each time one of the mouse buttons was pressed over the non-client area.
 /// </summary>
 /// <param name="args">NonClientMouseEventArgs contain mouse position, button pressed,
 /// and hit-test code for current position. </param>
 protected virtual void OnNonClientMouseDown(NonClientMouseEventArgs args)
 {
 }
Esempio n. 4
0
        protected override void OnNonClientMouseDown(NonClientMouseEventArgs args)
        {
            if (args.Button != MouseButtons.Left)
            {
                return;
            }

            switch (args.HitTest)
            {
            case (int)NativeMethods.NCHITTEST.HTCLOSE:
            {
                //NativeMethods.POINT pt = NativeMethods.POINT.FromPoint(args.Location);
                if (DepressButton(closeButton))
                {
                    NativeMethods.SendMessage(this.Handle,
                                              (int)NativeMethods.WindowMessages.WM_SYSCOMMAND,
                                              (IntPtr)NativeMethods.SystemCommands.SC_CLOSE, IntPtr.Zero);
                }
                args.Handled = true;
                break;
            }

            case (int)NativeMethods.NCHITTEST.HTMINBUTTON:
            {
                //		NativeMethods.POINT pt = NativeMethods.POINT.FromPoint(args.Location);
                if (DepressButton(minimizeButton))
                {
                    NativeMethods.SendMessage(this.Handle,
                                              (int)NativeMethods.WindowMessages.WM_SYSCOMMAND,
                                              (IntPtr)NativeMethods.SystemCommands.SC_MINIMIZE, IntPtr.Zero);
                }
                args.Handled = true;
                break;
            }

            case (int)NativeMethods.NCHITTEST.HTMAXBUTTON:
            {
                if (DepressButton(maximizeButton))
                {
                    int sc = (WindowState == FormWindowState.Maximized)?
                             (int)NativeMethods.SystemCommands.SC_RESTORE : (int)NativeMethods.SystemCommands.SC_MAXIMIZE;

                    NativeMethods.SendMessage(this.Handle,
                                              (int)NativeMethods.WindowMessages.WM_SYSCOMMAND,
                                              (IntPtr)sc, IntPtr.Zero);
                }
                args.Handled = true;
                break;
            }

            case (int)NativeMethods.NCHITTEST.HTHELP:
            {
                if (DepressButton(helpButton))
                {
                    Type type = this.GetType();
                    if (type != null)
                    {
                        MethodInfo methodInfo = type.GetMethod("toggleMenu");
                        methodInfo.Invoke(this, new object[] {});
                    }
                }
                args.Handled = true;
                break;
            }
            }
            //TODO: handle other buttons if exist
        }
 private void WmNCLButtonDown(ref Message msg)
 {
     Point pt = this.PointToWindow(new Point(msg.LParam.ToInt32()));
     NonClientMouseEventArgs args = new NonClientMouseEventArgs(
         MouseButtons.Left, 1, pt.X, pt.Y, 0, msg.WParam.ToInt32());
     OnNonClientMouseDown(args);
     if (!args.Handled)
     {
         DefWndProc(ref msg);
     }
     msg.Result = NativeMethods.TRUE;
 }
 /// <summary>
 /// Called each time one of the mouse buttons was pressed over the non-client area.
 /// </summary>
 /// <param name="args">NonClientMouseEventArgs contain mouse position, button pressed,
 /// and hit-test code for current position. </param>
 protected virtual void OnNonClientMouseDown(NonClientMouseEventArgs args)
 {
 }