惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
博客园 - 聂微东
有赞技术团队
有赞技术团队
The Cloudflare Blog
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
T
The Blog of Author Tim Ferriss
D
Docker
L
LangChain Blog
Vercel News
Vercel News
C
Check Point Blog
博客园 - Franky
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
人人都是产品经理
人人都是产品经理

博客园 - 落木

PowerDesigner中NAME和COMMENT的互相转换,需要执行语句 获取网站根目录的urli源代码 - 落木 - 博客园 Control的Invoke和BeginInvoke 扩大范围的多条件查询 用.net的GetCallbackEventReference函数来实现dropDownList联动的ajax效果 处理SQLSERVER死锁(转载) 调用DirectX进行简单的多媒体编程系列(四) 调用DirectX进行简单的多媒体编程系列(二) 调用DirectX进行简单的多媒体编程系列(一) 数据库分页算法 mysql想说爱你不容易啊,从mssql迁移到mysql时,几乎所有的存储过程都得改,语法相差很大,累人!! 自己写的sqlserver和mysql的行转列通用存储过程 MSSQL优化文章 C#中编写sqlserver中自定义函数,实现复杂报表 Ajax使用Post方式提交到.aspx页面交互的例子 核单台帐表(存储过程) 清欠率(存储过程) ExtJS中的面向对象设计,组件化编程思想 - 落木 - 博客园 ExtJS中如何扩展自定义的类
调用DirectX进行简单的多媒体编程系列(三)
落木 · 2009-12-04 · via 博客园 - 落木

以上把基本的类写好了,下面就可以开始编写前台代码了。先来个截图


 直接上代码吧

 using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QBAudioLib;namespace QBAudio
{
    
public partial class Form2 : Form
    {
        QBAudioCtrl qbCtrl;
        DeviceStatus devStauts;
        PlayFlags thisFlags;
public Form2()
        {
            InitializeComponent();

        }

private void Form2_Load(object sender, EventArgs e)//初始化
        {
            
//获得所有的音频设备
            List<DeviceInfo> devInfo = QBDeviceHelper.GetDeviceList();
            
foreach (DeviceInfo dev in devInfo)
            {
                cBox_Devices.Items.Add(dev.DevId);
            }
this.thisFlags = PlayFlags.Default;
        }
private void btn_play_Click(object sender, EventArgs e)//播放
        {
            
try
            {
                qbCtrl.Dev_Play(
this.thisFlags);
                devStauts 
= qbCtrl.GetDeviceStatus();
                lbl_status.Text 
= "playing:" + devStauts.isPlaying.ToString() + "---looping:" + devStauts.isLooping + "---Terminated:" + devStauts.isTerminated;
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
private void btn_stop_Click(object sender, EventArgs e)//停止
        {
            
try
            {
                qbCtrl.Dev_Stop();
                devStauts 
= qbCtrl.GetDeviceStatus();
                lbl_status.Text 
= "playing:" + devStauts.isPlaying.ToString() + "---looping:" + devStauts.isLooping + "---Terminated:" + devStauts.isTerminated;
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
private void btn_File_Click(object sender, EventArgs e)//选择播放文件
        {
            OpenFileDialog filedg 
= new OpenFileDialog();
            filedg.Filter 
= "音视频文件(*.wav)|*.wav";
            
if (filedg.ShowDialog() == DialogResult.OK)
            {
                
if (filedg.FileName != "" || filedg.FileName != string.Empty)
                {
                    txt_File.Text 
= filedg.FileName;
                }
            }
        }
private void cBox_Devices_SelectedIndexChanged(object sender, EventArgs e)//选择声卡
        {
            
try
            {
                
//thisDev = (DeviceInfo)cBox_Devices.SelectedItem;
                Guid devID = (Guid)cBox_Devices.SelectedItem;
                
string fileName = txt_File.Text.Trim();
                
if (fileName == null || fileName == string.Empty)
                {
                    MessageBox.Show(
"请选择播放的文件...");
                    
return;
                }
                qbCtrl 
= new QBAudioCtrl(devID, fileName);
                devStauts 
= qbCtrl.GetDeviceStatus();
                lbl_status.Text 
= "playing:" + devStauts.isPlaying.ToString() + "---looping:" + devStauts.isLooping + "---Terminated:" + devStauts.isTerminated;
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

private void btn_pause_Click(object sender, EventArgs e)//暂停
        {
            
try
            {
                qbCtrl.Dev_Dispose();
            }
            
catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
private void radioButton1_CheckedChanged(object sender, EventArgs e)//设置正常播放
        {
            
if (radioButton1.Checked)
            {
                thisFlags 
= PlayFlags.Default;
                btn_play_Click(sender, e);
            }
        }
private void radioButton2_CheckedChanged(object sender, EventArgs e)//设置循环播放
        {
            
if (radioButton2.Checked)
            {
                thisFlags 
= PlayFlags.Looping;
                btn_play_Click(sender, e);
            }
        }
    }
}