|
分類:[.NET 全般]
Microsoft Visual C# 2008 Express Editionを使い音声ファイルの同時再生を作ったのですが使用が変わり(1)ボタンじゃなく自動再生、(2)フォームをなくす というものになり、なかなかうまくいかず困っています・・・。
下のプログラムが変更前なのですが変更のポイントなどを指摘してもらえると幸いです。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.DirectSound;
namespace MDXSample { /// <summary> /// メインフォーム /// </summary> public partial class MainForm : Form { /// <summary> /// DirectSound デバイス /// </summary> private Device _device1 = null; private Device _device = null;
/// <summary> /// セカンダリバッファ /// </summary> private SecondaryBuffer _buffer1 = null; private SecondaryBuffer _buffer = null;
/// <summary> /// コンストラクタ /// </summary> public MainForm() { this.Hide();
InitializeComponent(); } /// <summary> /// フォームが表示される直前 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainForm_Load(object sender, EventArgs e) { this.Hide(); try { // デバイスの作成 this._device1 = new Device(); this._device = new Device();
// 協調レベルの設定 this._device1.SetCooperativeLevel(this, CooperativeLevel.Priority); this._device.SetCooperativeLevel(this, CooperativeLevel.Priority);
// セカンダリバッファにファイルからバッファをロードします this._buffer1 = new SecondaryBuffer("../../test.wav", this._device1); this._buffer = new SecondaryBuffer("../../ele.wav", this._device); } catch (Exception ex) { // 失敗 MessageBox.Show(ex.ToString(), "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /// <summary> /// フォームが閉じられる直前 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { // セカンダリバッファの破棄 if (this._buffer1 != null) { this._buffer.Dispose(); }
// デバイスの破棄 if (this._device1 != null) { this._device1.Dispose(); } } /// <summary> /// 再生ボタンを押したとき /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonPlay_Click(object sender, EventArgs e) { if (this._buffer1 != null) { // 再生位置を一番最初に設定 this._buffer.SetCurrentPosition(0); this._buffer1.SetCurrentPosition(0);
// 再生 this._buffer1.Play(0, BufferPlayFlags.Default); this._buffer.Play(0, BufferPlayFlags.Default); } } /// <summary> /// 停止ボタンを押したとき /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonStop_Click(object sender, EventArgs e) { if (this._buffer != null) { // 停止 this._buffer.Stop(); this._buffer1.Stop(); } } } }
|