今、Playsoundをつかってwavを再生しようと思っています。
PlaySound("test1.wav",NULL,SND_SYNC|SND_FILENAME|SND_APPLICATION );
上記を.net 2003を使って作成・実行するとtest1.wavが再生されるのですが
.net 2005だとファイル名の取得失敗しているのか、エラー音が再生されます。
どのようにしたら2005の環境で指定した音を再生できるのしょうか?
> .net 2005だと
ではどのように記述していますか?
まさか LPCTSTR で無理やりキャストはしていませんよね?
char c_char[10]; //ファイル名
LPCSTR str;
str = &c_char[0];
PlaySound((LPCTSTR)str,NULL,SND_SYNC|SND_FILENAME|SND_APPLICATION );
って感じにしてます。
いまいちWin32APIの使い方がわかっていないのです。
申し訳ありませんがご教授お願いします。
> 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
を参考にしてみてください。
> LPCSTR型 は const char*型とは限りません。
間違いました。。。orz
LPCSTR型は const char*型ですね、、(FARはとりあえずおいといて)
LPCTSTR型がコンパイルオプションで切り替わるのでした。
> > str = &c_char[0];
> ここでエラーが出ませんか?
ですから、ここでエラーは出ませんね。
ということで、最初の指摘どおり
> PlaySound((LPCTSTR)str,NULL,SND_SYNC|SND_FILENAME|SND_APPLICATION );
の無理やりキャストがまずいですね。
>> str = &c_char[0];
>ここでエラーが出ませんか?
エラーも警告も出ていないです。(Debugだからかもしれませんが)
上記のリンクの記事読ませていただきました。
そこの、構成プロパティの「マルチバイト文字セットを使用する」に
オプションを変更することによって指定したファイルを読み込んで再生
するようになりました。
早い返答どうもありがとうございました。
ツイート | ![]() |