MCIでの音楽再生

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
lbfuvab

MCIでの音楽再生

#1

投稿記事 by lbfuvab » 15年前

mp3のプレーヤーを作ろうと思い、以下のようなコードを書きました(ダイアログボックスは何のコントロールも載せてません)
しかし、MCI_PLAYを実行すると固まってしまいます。
どうすればmp3を正常に再生できるか教えてください。
環境はWin7 Pro + VC++2008 ExpressEditionです。
#include<windows.h>
#include<mmsystem.h>
#include"resource.h"

#pragma comment(lib,"winmm.lib")

LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp);

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd){
    return DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)WndProc);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){
    static char path[MAX_PATH]="";
    static BOOL bPlaying=FALSE;
    static MCI_OPEN_PARMS mop;

    switch(msg){
        case WM_DROPFILES:
            if(bPlaying==TRUE){
                mciSendCommand(mop.wDeviceID,MCI_CLOSE,0,0);
                bPlaying=FALSE;
            }

            DragQueryFile((HDROP)wp,0,path,MAX_PATH);

            mop.lpstrDeviceType="MPEGVideo";
            mop.lpstrElementName=path;

            MessageBox(hWnd,path,"",MB_OK);
            
            if(mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)&mop)){
                MessageBox(hWnd,"エラー","error",MB_OK);
                exit(-1);
            }
            MessageBox(hWnd,"a","",MB_OK);
            mciSendCommand(mop.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,0);
            MessageBox(hWnd,"b","",MB_OK);

            mciSendCommand(mop.wDeviceID,MCI_PLAY,0,0);
            bPlaying=TRUE;
            break;
        case WM_COMMAND:
            switch(LOWORD(wp)){
                case IDCANCEL:
                    if(bPlaying)
                        mciSendCommand(mop.wDeviceID,MCI_CLOSE,0,0);
                    EndDialog(hWnd,0);
                    break;
                default:
                    return FALSE;
            }
            break;
        default:
            return FALSE;
    }
    return TRUE;
}

Justy

Re:MCIでの音楽再生

#2

投稿記事 by Justy » 15年前

 これが原因かどうかは判りませんが、とりあえず MCI_PLAYのところのmciSendCommand関数の
呼び出しで第4引数を 0にしないで、MCI_PLAY_PARMS構造体へのポインタを指定してみて下さい。

lbfuvab

Re:MCIでの音楽再生

#3

投稿記事 by lbfuvab » 15年前

きちんと再生できました、ありがとうございました!
次はシークバーの実装を頑張ります!

閉鎖

“C言語何でも質問掲示板” へ戻る