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で質問しましょう!
似たような質問が見つかりました
- iPod・ウォークマン・音楽プレーヤー 音楽プレイヤーを探しています 3 2023/06/03 18:55
- その他(AV機器・カメラ) AmazonミューシックHDのハイレゾ曲をflac拡張子で、SDカードに保存したいのですが? 1 2022/09/16 13:23
- Windows 10 windows付属のボイスレコーダー。雑音が入らないように録音するには? 1 2022/05/16 22:39
- Visual Basic(VBA) chromedriverのver-upで動作不安定となった 3 2022/07/07 11:32
- フリーソフト AIMPに代わるおすすめのプレイヤー(フリーソフト)を教えてください 2 2022/08/11 20:32
- スピーカー・コンポ・ステレオ 動画再生も可能なファイル管理のできる音楽再生ソフトはありますか。 2 2022/09/24 19:34
- Windows 8 パソコンからの音が出ません。 2 2022/05/01 12:38
- iPod・ウォークマン・音楽プレーヤー itunes 音楽再生時の音飛び 4 2022/11/30 17:24
- Windows 10 Windows10 の設定?について (長文ですがよろしくお願いします)m(_ _)m 3 2022/05/14 12:22
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の動画ファイルを自...
-
windows media playerでCDを...
-
PS3で、USBメモリに取り...
-
iPhoneのショートカットでファ...
-
パソコンでDVDを1.5倍速などで...
-
バーが動かない?
-
windows media player で再生...
-
パソコンでCDをエンドレスで...
-
ムービーメーカーにmp3が入らな...
-
プログラム内から、MIDIファイ...
-
Windows10 DVDが見れない。
-
shockwaveを再生したいのですが…
-
PCで作成したDVD内容の順番が変...
-
パイオニアDEH-970 SDファイル構成
-
PCにCDを入れると歌詞が出...
-
Windows Media Player 11におい...
-
Windows Media Playerの時間表...
-
PCのゲーム中の音楽や再生で途...
-
mp3が再生できない
-
CD認識に時間がかかるのですが…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の動画ファイルを自...
-
バーが動かない?
-
iPhoneのショートカットでファ...
-
パソコンでDVDを1.5倍速などで...
-
windows media playerでCDを...
-
WindowsMediaPlayerで再生位置...
-
DVD-Rに音楽ファイル(WAV,MP3...
-
Windows Media ...
-
Windows Media Playerの逆再生...
-
DVD-Rに音楽は取り込めるのです...
-
PS3で、USBメモリに取り...
-
音楽データ(MP3)をダウンロード...
-
beep音ではなく音楽(mp3ファイ...
-
パソコンで再生できないDVD の...
-
mp3アルバムを作ると勝手にフ...
-
メディアプレーヤーでDVD再生時...
-
ムービーメーカーで画像の再生...
-
USBメモリーから音楽を再生する...
-
GOMプレイヤーのSWFファイルに...
-
ドライブレコーダーがパソコン...
おすすめ情報
問題のプログラム:
const char* k = pass.c_str();
wchar_t* l;
mbstowcs(l, k, sizeof(k));
if (PlaySound(TEXT(l), NULL, SND_SYNC)) {
cout << "再生しました";
}
//error:識別子Llが定義されていません