掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
del2010のリソースマネージャーでWAV音を鳴らすには? (ID:37563)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
これはIDEのバグが原因といっても良いと思います。 PlaySoundはリソースタイプがWAVEやSOUNDとなっているリソース「のみ」を再生できるのですが、 リソースマネージャでは画像系のリソース以外はすべて「RCData」というタイプにされてしまいます。 上述の通り、PlaySoundはRCDataの中など探しませんので、結果として再生できません。 この問題を解決するには4つの方法があります。 1.IDEのアップデートを待つ この問題はすでにQC79935としてバグ報告されています。 しかしながら何故か却下されているため、アップデートはあまり期待できません。 2.リソースを手動で生成する 手動でリソーススクリプトを書き、コンパイルすればコードを修正することなく問題を解決できます。 もちろんリソースマネージャの恩恵は放棄することになります。 3.dprojファイルを書き換える リソースマネージャのリソースタイプは書き換えが可能なので、一見ここで指定すれば問題解決のように思えます。 しかしすでに定義されているタイプ(Bitmapなど)以外は指定できません。 これを回避するにはdprojを直接編集してリソースタイプをSOUNDもしくはWAVEにします。 しかしマネージャ上でリソース識別子の変更等をすると、不用意に元に戻ってしまう場合があります。 4.コードを書き換える これが一番現実的な解決方法だと思います。 var rs: TResourceStream; begin rs := TResourceStream.Create(HInstance, 'Resource_2', 'RCData'); PlaySound(rs.Memory, 0, SND_MEMORY or SND_ASYNC); rs.Free; end; とメモリ上からの再生にすることで解決できます。 SND_ASYNCを指定しておきながら直後にFreeしてしまうのは危険に思えますが、 この場合のrs.Memoryはメモリ上にロードされたEXEファイルの中を指すポインタですので問題ありません。 LockResource APIなどでも代用できます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.