
No.3ベストアンサー
- 回答日時:
まず、次の点を確認させてください。
○ TEXT("再生ファイル.wav") 等と直接書いたら音が鳴ったのですか?
→ これで音が鳴らないのなら、TEXT以前の問題です。
○「wchar_t*に型を変えても」とは具体的にどの処理のことを言っているのですか?
http://wisdom.sakura.ne.jp/system/winapi/win32/w …
http://ichitcltk.hustle.ne.jp/gudon2/index.php?p …
C++でWINAPIを使うなら、UNICODE版とマルチバイト版の違いを意識する必要があります。
プログラム中で
"再生ファイル.wav" と書いたらマルチバイトの文字列(const char *)に
L"再生ファイル.wav" と書いたらUNICODEの文字列(const wchar_t *)に
なります。
TEXTマクロは、プロジェクトの設定に合わせて、自動で Lの有無を切り替えるものです。
マクロで書き換えるものなので、文字列リテラル (""で囲った文字列)以外を指定しても意味はありません。
TEXT(l)は Ll に書き換えられるだけで、 変数 l の内容を自動で変換するものではありません。
PlaySound(TEXT("再生ファイル.wav"), NULL, SND_SYNC)
で TEXTが使われているのは、 TEXTマクロで自動で L"再生ファイル.wav"と"再生ファイル.wav"のうち適切な型で使うようにするためです。
変数で指定するのなら、最初から適切な型の変数を指定します。
ひとまず、
if (PlaySound(l, NULL, SND_SYNC)) {
これでエラーが一つ消えるはずです。
ですが、問題はそれだけではありません。
○なぜ自作しようとしたのか?
○なぜC++で作ろうとしているのか?
○なぜWINAPIをそのまま使うような手段を採用したのか?
「現在、C++を勉強中で、練習を兼ねて作ってみたい」
ということならば、このまま頑張ってください。
ただ、まだまだ覚えなければいけないことが沢山あります。
※ wchar_t* l;
※ mbstowcs(l, k, sizeof(k));
※ C++(あるいはC言語)に詳しい人なら、ここにも大きな問題があることにすぐ気付くはずです。
「とにかく再生したい」
のならば、別の手段が沢山あり、C++を選ぶ理由はありません。
既出ですが、音楽再生ソフトは無料有料で数多くあります。
窓の杜 とか Vector とかで調べれば沢山あります。
OS付属のメディアプレイヤーでも大抵の音声は再生できます。
プログラムを作るにしても、C++は非常に難しい言語であり、「C+;でなければならない特別な理由」が無いのなら、別の言語の方が楽です。
例えば、C# や VB.Net だと
https://dobon.net/vb/dotnet/programing/playwavfi …
で「文字列」の部分に気を使うことなく、同じことができます。
No.2
- 回答日時:
良くは知らんが、以下を見ると、
https://www.tokovalue.jp/function/PlaySound.htm
ダブルクリックして再生できる音楽ファイルは再生できると思います。
出来ないばあいは、再生できる方法を構築する必要がありそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows Media ...
-
WindowsMediaPlayerで再生位置...
-
MPEGファイルが再生できない問...
-
ボイスレコーダーで録音したフ...
-
フォルダ内の動画ファイルを自...
-
vobファイルが短くなって再生さ...
-
vlcメディアプレイヤーで連続再...
-
音楽再生ソフトを作るには
-
iPhoneのショートカットでファ...
-
CD-Rにたくさん曲を入れたい
-
ウインドウズのメディアプレイ...
-
iTunesでCDを作成したいのです...
-
WMAファイルをDVDプレー...
-
Eドライブの関連付けがされない
-
Windows Media Playerの逆再生...
-
PS3で、USBメモリに取り...
-
免許証をPDFでメール送信
-
容量の大きいzipファイルの解凍...
-
Androidのアプリのclipboxなの...
-
右クリック→新規作成→圧縮(zip...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の動画ファイルを自...
-
パソコンでDVDを1.5倍速などで...
-
windows media playerでCDを...
-
DVD-Rに音楽ファイル(WAV,MP3...
-
WindowsMediaPlayerで再生位置...
-
Windows Media Playerの逆再生...
-
Windows Media ...
-
iPhoneのショートカットでファ...
-
Windows10 DVDが見れない。
-
DVD再生の既定のプログラムの変...
-
frieve audio
-
mp3アルバムを作ると勝手にフ...
-
WMPを抜けたとき再生位置を記憶...
-
バーが動かない?
-
メディアプレーヤーでDVD再生時...
-
Windows Media Player 勝手に...
-
エントリポイントを見つけられ...
-
外付けハードディスクに入れた...
-
家庭用DVDプレーヤーでMP3を再生
-
PS3で、USBメモリに取り...
おすすめ情報
問題のプログラム:
const char* k = pass.c_str();
wchar_t* l;
mbstowcs(l, k, sizeof(k));
if (PlaySound(TEXT(l), NULL, SND_SYNC)) {
cout << "再生しました";
}
//error:識別子Llが定義されていません