예제 #1
0
        /// <summary>
        /// Decode Mouse Click messages. If Exit clicked, exit application with result = Fail
        /// </summary>
        /// <param name="m">The Windows Message to decode.</param>
        private void DecodeMouseClick(ref Message m)
        {
            Point   point = new Point(m.LParam.ToInt32());
            Control c     = PenPanel.GetChildAtPoint(point);

            if (c != null && c == ExitLbl)
            {
                Program.ExitApplication(255);
            }
        }
예제 #2
0
        /// <summary>
        /// Decode Pen messages. Clear control based on position of Pen action.
        /// </summary>
        /// <param name="m">The Windows Message to decode.</param>
        private void DecodePointer(ref Message m)
        {
            int pointerId = LoWord(m.WParam.ToInt32());

            NativeMethods.POINTER_INFO pointer = new NativeMethods.POINTER_INFO();

            if (!NativeMethods.GetPointerInfo(pointerId, ref pointer))
            {
                // Get pointer info failed.
                return;
            }
            if (pointer.pointerType == NativeMethods.POINTER_INPUT_TYPE.PEN)
            {
                if (pointer.PointerFlags.HasFlag(NativeMethods.POINTER_FLAGS.INCONTACT))
                {
                    Point   screenPoint = new Point(pointer.PtPixelLocation.X, pointer.PtPixelLocation.Y);
                    Point   panelPoint  = PenPanel.PointToClient(screenPoint);
                    Control c           = PenPanel.GetChildAtPoint(panelPoint);

                    if (c == null)
                    {
                        return;
                    }

                    if (pointer.PointerFlags.HasFlag(NativeMethods.POINTER_FLAGS.FIRSTBUTTON) &&
                        (c.BackColor == Color.YellowGreen || c.BackColor == Color.Crimson))
                    {
                        //pen down
                        c.Dispose();
                    }
                    else if (pointer.PointerFlags.HasFlag(NativeMethods.POINTER_FLAGS.SECONDBUTTON) &&
                             c.BackColor == Color.Gold)
                    {
                        //pen erase (POINTER_FLAGS.SECONDBUTTON)
                        c.Dispose();
                    }
                    //check if grids are cleared
                    CheckFinish();
                }
            }
        }