音が鳴りません。

[戻る]
2007/02/17(土) 10:16:06
リソースの再生プログラムですが、音がなりません。
リソースの意味がわからないのですが、CドライブのWINDOWSフォルダにある、
クリック音、windows起動の音、終了時の音、などの事なんでしょうか?

音とがなりませんが、どこが間違っているか教えてください。





LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    HINSTANCE hInst;

    switch(uMsg){
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        case WM_LBUTTONDOWN:    //再生
            hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
            PlaySound("WinXP_Startup",hInst,SND_RESOURCE | SND_ASYNC | 
SND_LOOP);
            return 0;
        case WM_RBUTTONDOWN:    //停止
            PlaySound(NULL,NULL,0);
            return 0;
    }
    return DefWindowProc(hWnd,uMsg,wParam,lParam);
}

Ban 2007/02/17(土) 10:54:43
> リソースの意味がわからないのですが、CドライブのWINDOWSフォルダにある、
> クリック音、windows起動の音、終了時の音、などの事なんでしょうか?

違います。
ここでいう「リソース」は、実行ファイル内にリンクされるwavデータ等をさします。
# メニューやアイコンなどの「リソース」と同様

このため、SND_RESOURCEを指定して"WinXP_Startup"と書くと、
その *実行ファイル自体* に *"WinXP_Startup"という識別子をもつwavデータ* がリソースと
してリンクされていない限り、データが見つからないといわれるでしょう。
# APIの呼び出しは戻り値をチェックする習慣をつけてください。PlaySoundが失敗してると思いま
す。

私には「號さんが『どんな風に何を再生したいか』」が分かりませんので「正解」は不明ですが、
ファイル指定したいならフラグが違いますし、システム定義サウンドを指定したい場合も違う、
ということは分かります。指定を変更するなり、リソースを追加するなりしてください。

2007/02/17(土) 11:36:38
[[解決]]
さっそくのご回答ありがとうございます!
リソース意味を間違えていたようですね。
>実行ファイル内にリンクされるwavデータ等をさします。

戻り値のチェックをするといいようですね。

いろいろ貴重なご意見ありがとうございました!

古いスレッドには追加発言できません。