以前にWAVEファイルの再生についてお聞きしたものですが、ひとつ問題が起きたので
それを聞きにきました!前回、WAVEファイルの再生はできたのですが、それは
アプリケーション実行中流れつづけるものとしてつくりたかったで、特に再生ボタンや
停止ボタンはつけずに開始はオープニング後、終了は特定の画面が出た場合に終了と
いう形につくったつもりなのですが、
終了のある特定の画面に行く前にアプリケーションを終了したり、×を押して終了
してしまうと、Windowsの音声も飛んでしまって一度再起動などしないと
音声などがでなくなってしまいました。これはどうすればいいのでしょう?
できればその原因も教えていただけると嬉しいです。
>CWavePlayDlg::OnStop() <以前のスレッドより
を、終了処理に加えればよいのでは?
遅くなりました。たばささんの言ってる事は終了項目をつけてユーザー側に音を中断できるようにしてあげると
いうことでしょうか?とりあえず終了処理は作成したのですが、やはりいきなり×を押されてしまうと
音がとんでしまいます。たとえば×を押したときにおこる作業の部分にウェブをストップさせるプログラムを
書いておきたいのですがそれは可能でしょうか?
>終了項目をつけてユーザー側に音を中断できるようにしてあげる
違います。
プログラム自身の終了処理で、OnStop() を呼ぶという意味です。
しなければいけない理由は、デバイスのクローズが自動的にはされないため。確か。
...でしたが、訂正。
CWavePlayDlgクラスのデストラクタでOnStop()を呼ぶようにするほうが、すっきり。
こうすると
プログラムの終了時にデストラクタが自動的に呼ばれる=OnStop()が処理される。
なので、このばあい、プログラムの終了処理のとこは、いじる必要なし。
ようするに、クラスのデストラクタには、必要な終了処理をすべて含める。
MFCは使ってないので、詳しくは分かりません。OnDestroy()でしたっけ?
プログラムの終了時に何が起きるか、流れを調べるといいと思います。
全然見当違いの解釈してしまってすいませんでした(^_^;)なんか恥ずかしいです…
ホント勉強不足ですいません…それで、OnStopを書く場所についてですが
CWavePlayDlgのクラス内に書いた方がいいというこのなのでしょうか?デストラクタの意味がわからなくて…
後、たばささんはいじる必要ないと言っていましたが、その終了部分というのはどこにあるのでしょう?一応
知っておきたいので…
>デストラクタの意味がわからなくて…
てことは、まずC++基本から勉強しよう。本とか、 http://www.kumei.ne.jp/c_lang/ とか。
でないと、多分、進めません。
>終了部分
MFCを使うか使わないかで、書きかたが違います。
デストラクタは、こんな感じ。
CWavePlayDlg::~CWavePlayDlg()
{
OnStop() ; //CWavePlayDlg::OnStop()を呼ぶ。
}