PlaySoundでwavを再生するには

解決


terror  2006-07-14 00:46:26  No: 62508

今、Playsoundをつかってwavを再生しようと思っています。

PlaySound("test1.wav",NULL,SND_SYNC|SND_FILENAME|SND_APPLICATION );

上記を.net 2003を使って作成・実行するとtest1.wavが再生されるのですが

.net 2005だとファイル名の取得失敗しているのか、エラー音が再生されます。
どのようにしたら2005の環境で指定した音を再生できるのしょうか?


Blue  2006-07-14 00:57:58  No: 62509

> .net 2005だと
ではどのように記述していますか?
まさか LPCTSTR で無理やりキャストはしていませんよね?


terror  2006-07-14 01:38:50  No: 62510

char c_char[10]; //ファイル名
LPCSTR str;
str = &c_char[0];
PlaySound((LPCTSTR)str,NULL,SND_SYNC|SND_FILENAME|SND_APPLICATION );

って感じにしてます。
いまいちWin32APIの使い方がわかっていないのです。
申し訳ありませんがご教授お願いします。


Blue  2006-07-14 01:59:45  No: 62511

> str = &c_char[0];
ここでエラーが出ませんか?

LPCSTR型 は const char*型とは限りません。コンパイラのオプションにより
const wchar_t*型にもなります。

VS2005から、コンパイルオプションのデフォルトが変わりました。
説明すると長くなるので、以前私がレスした掲示板の
http://cgi21.plala.or.jp/keny01/patio_32/patio.cgi?mode=view&no=250
を参考にしてみてください。


Blue  2006-07-14 02:12:51  No: 62512

> LPCSTR型 は const char*型とは限りません。
間違いました。。。orz

LPCSTR型は const char*型ですね、、(FARはとりあえずおいといて)
LPCTSTR型がコンパイルオプションで切り替わるのでした。

> > str = &c_char[0];
> ここでエラーが出ませんか?
ですから、ここでエラーは出ませんね。

ということで、最初の指摘どおり
> PlaySound((LPCTSTR)str,NULL,SND_SYNC|SND_FILENAME|SND_APPLICATION );
の無理やりキャストがまずいですね。


terror  2006-07-14 02:24:06  No: 62513

>> str = &c_char[0];
>ここでエラーが出ませんか?
エラーも警告も出ていないです。(Debugだからかもしれませんが)

上記のリンクの記事読ませていただきました。
そこの、構成プロパティの「マルチバイト文字セットを使用する」に
オプションを変更することによって指定したファイルを読み込んで再生
するようになりました。

早い返答どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加