/// <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); } }
/// <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(); } } }