Exemple #1
0
        public void MyWTPacketEventHandler(Object sender_I, MessageReceivedEventArgs eventArgs_I)
        {
            try
            {
                if ((m_maxPkts == 1) && (m_wtData != null))
                {
                    uint pktID = (uint)eventArgs_I.Message.WParam;
                    //WintabPacketExt pkt2 = m_wtData.GetDataPacketExt((uint)eventArgs_I.Message.LParam, pktID);
                    WintabPacket pkt = m_wtData.GetDataPacket((uint)eventArgs_I.Message.LParam, pktID);
                    //WintabPacket pkt = m_wtData.GetDataPacket(pktID);
                    if (textBox1 != null)
                    {
                        textBox1.Text = "Bamboo point " + pkt.pkX.ToString() + ", " + pkt.pkY.ToString() + ", Z:" + pkt.pkZ.ToString() + ", p:" + pkt.pkNormalPressure.ToString();

                        textBox1.Text += "\r\nMouse: " + Cursor.Position.X.ToString() + ", " + Cursor.Position.Y.ToString();
                    }
                    if ((pkt.pkContext != 0) && ((pkt.pkX != lastX) || (pkt.pkY != lastY)))
                    {
                        capturing = pkt.pkZ < 512;


                        lastX = pkt.pkX;
                        lastY = pkt.pkY;
                        lastZ = pkt.pkZ;

                        // New version to use cursor to correct offset
                        PointF pt;
                        if (zpNeedsInit && capturing)
                        {
                            /*PointF detected = new PointF(pkt.pkX / MultFactor, pkt.pkY / MultFactor);
                             * pt = pa.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
                             * zp2 = new PointF(pt.X - detected.X, pt.Y - detected.Y);*/
                            zp2         = pa.PointToClient(new Point(0, 0));
                            pt          = new PointF(pkt.pkX / MultFactor + zp2.X, pkt.pkY / MultFactor + zp2.Y);
                            zpNeedsInit = false;
                        }
                        else
                        {
                            pt = new PointF(pkt.pkX / MultFactor + zp2.X, pkt.pkY / MultFactor + zp2.Y);
                        }//*/

                        //Cursor.Position = new Point(lastX/10, lastY/10);
                        //Point zp = pa.PointToClient(new Point(0,0));
                        //PointF pt = Cursor.Position.X, (uint)Cursor.Position.Y

                        // The version that works well at home...
                        //   PointF pt = new PointF(pkt.pkX / MultFactor + zp.X, pkt.pkY / MultFactor + zp.Y);

                        // Point pt = pa.PointToClient(new Point(lastX / 10, lastY / 10));
                        //Using mouse co-ords
                        //PointF pt = pa.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
                        pa.showPointer((int)pt.X, (int)pt.Y);
                        uint m_pressure = pkt.pkNormalPressure;

                        if (textBox1 != null)
                        {
                            textBox1.Text += "\r\n" + pt.X.ToString() + "," + pt.Y.ToString();
                            textBox1.Text += "\r\nHWND = " + eventArgs_I.Message.HWnd.ToString();
                            textBox1.Text += "\r\nTime = " + pkt.pkTime.ToString();
                        }
                        if (m_pressure > 1)
                        {
                            if (pa.drawing)
                            {
                                pa.DrawTo(pt.X, pt.Y, (int)m_pressure);
                                //pa.DrawTo((uint)Cursor.Position.X, (uint)Cursor.Position.Y, (int)m_pressure);
                            }
                            else
                            {
                                pa.startDrawing(pt.X, pt.Y, (int)m_pressure);
                                //pa.startDrawing((uint)Cursor.Position.X, (uint)Cursor.Position.Y, (int)m_pressure);
                            }
                            //    mouse_event(MOUSEEVENTF_LEFTDOWN, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
                        }
                        else
                        {
                            if (pa.drawing)
                            {
                                pa.endDrawing();
                            }
                            //  mouse_event(MOUSEEVENTF_LEFTUP, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
                        }
                        //textBox1.Text = "Data: X=" + lastX.ToString() + "; Y=" + lastY.ToString() + "; Z=" + lastZ.ToString() + "; P=" + m_pressure.ToString()+"\r\n";
                        //textBox1.SelectionStart = textBox1.Text.Length;
                        //textBox1.ScrollToCaret();
                        //m_pkTime = pkt.pkTime;
                    }
                }
            }
            catch (Exception ex)
            {
                // MessageBox.Show("Lost tablet context.");
            }
        }