Beispiel #1
0
        public unsafe void StartMidiIn()
        {
            cDevice.Children.Clear();
            //直接使用Thread类,以及其方法
            //Thread threadA = new Thread();
            //threadA.Start();
            int num = (int)MidiDeviceBusiness.midiInGetNumDevs();

            cDevice.Height = 30 * (num + 1);

            for (int j = 0; j < num; j++)
            {
                MidiDeviceBusiness.MIDIINCAPS caps = new MidiDeviceBusiness.MIDIINCAPS();
                MidiDeviceBusiness.midiInGetDevCaps(new UIntPtr(new IntPtr(j).ToPointer()), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIINCAPS))));
                //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                //Console.WriteLine(caps.szPname + "----");

                Grid grid = new Grid
                {
                    Width  = 300,
                    Height = 30,
                };
                DoubleAnimation doubleAnimation = new DoubleAnimation()
                {
                    From      = 300,
                    To        = 0,
                    Duration  = TimeSpan.FromSeconds(0.5),
                    BeginTime = TimeSpan.FromSeconds(0.3 * j),
                };

                cDevice.Children.Add(grid);
                Canvas.SetTop(grid, 30 * j);
                Canvas.SetLeft(grid, 300);

                TextBlock tb = new TextBlock()
                {
                    Foreground = new SolidColorBrush(Color.FromRgb(200, 200, 200)),
                    Text       = caps.szPname,
                };
                tb.MouseEnter          += Tb_MouseEnter;
                tb.MouseLeave          += Tb_MouseLeave;
                tb.MouseLeftButtonDown += Tb_MouseLeftButtonDown;
                grid.Children.Add(tb);
                grid.BeginAnimation(Canvas.LeftProperty, doubleAnimation);
            }
        }
Beispiel #2
0
 public unsafe void SearchEquipmentIn()
 {
     //直接使用Thread类,以及其方法
     //Thread threadA = new Thread();
     //threadA.Start();
     cbRealDeviceIn.Items.Clear();
     for (int j = 0; j < MidiDeviceBusiness.midiInGetNumDevs(); j++)
     {
         MidiDeviceBusiness.MIDIINCAPS caps = new MidiDeviceBusiness.MIDIINCAPS();
         MidiDeviceBusiness.midiInGetDevCaps(new UIntPtr(new IntPtr(j).ToPointer()), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIINCAPS))));
         //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
         cbRealDeviceIn.Items.Add(caps.szPname);
     }
     if (cbRealDeviceIn.Items.Count > 0)
     {
         cbRealDeviceIn.SelectedIndex = 0;
     }
 }
Beispiel #3
0
        public unsafe int SearchEquipmentIn2()
        {
            int position  = -1;
            var deviceIns = mw.deviceConfigModel.Devices.Select(t => t.DeviceIn).ToList();

            cbRealDeviceIn.Items.Clear();
            for (int j = 0; j < MidiDeviceBusiness.midiInGetNumDevs(); j++)
            {
                MidiDeviceBusiness.MIDIINCAPS caps = new MidiDeviceBusiness.MIDIINCAPS();
                MidiDeviceBusiness.midiInGetDevCaps(new UIntPtr(new IntPtr(j).ToPointer()), ref caps, Convert.ToUInt32(Marshal.SizeOf(typeof(MidiDeviceBusiness.MIDIINCAPS))));
                //midiOutOpen(out IntPtr mOut, (uint)j, (IntPtr)0, (IntPtr)0, 0);
                String Pname = caps.szPname;
                if (deviceIns.Contains(Pname))
                {
                    position = j;
                    break;
                }
            }

            return(position);
        }