C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: フォームを隠し自動再生


(過去ログ 77 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■45662 / inTopicNo.1)  フォームを隠し自動再生
  
□投稿者/ エコー (1回)-(2010/01/18(Mon) 14:42:45)

分類:[.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();
}
}
}
}
引用返信 編集キー/
■45686 / inTopicNo.2)  Re[1]: フォームを隠し自動再生
□投稿者/ やじゅ (1455回)-(2010/01/18(Mon) 22:01:11)
やじゅ さんの Web サイト
No45662 (エコー さん) に返信
> Microsoft Visual C# 2008 Express Editionを使い音声ファイルの同時再生を作ったのですが使用が変わり
>(1)ボタンじゃなく自動再生、(2)フォームをなくす
> というものになり、なかなかうまくいかず困っています・・・。

「なかなかうまくいかず」という部分を説明しないと誰も答えてくれないですよ。

で、ボタンはそのままにしておいて、イベントだけ発生させるって方法がいいんじゃないかな。
Buttonのクリックイベントを発生させる
http://dobon.net/vb/dotnet/control/performclick.html

引用返信 編集キー/
■45766 / inTopicNo.3)  Re[2]: フォームを隠し自動再生
□投稿者/ エコー (2回)-(2010/01/19(Tue) 19:07:00)
返信ありがとうございます><

まさしくこのやり方をしりたかったのですがこれを組み込みなんど実行してもボタンを押さないとイベントが再生なりません・・

もうすこしがんばってみます!

ありがとうございました!

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -