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