コールバック

[戻る]
DD7 2007/02/21(水) 21:18:13
あるサイトで見つけたプログラムですが
二つは、コールバックに使っていると思いますが、
具体的には、記述によりどんな意味がでますか?
あまり意味がない気がするんですが。

教えてください。

maop.dwCallback = (DWORD)hWnd;
mpp.dwCallback  =  (DWORD)hWnd;









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

    int  er;
    TCHAR   str[256];
    static MCI_PLAY_PARMS    mpp;
    static MCI_ANIM_OPEN_PARMS   maop;


    switch( msg )
    {
    case WM_CREATE:            
         maop.dwCallback = (DWORD)hWnd;
        maop.lpstrElementName = TEXT("a.avi");
        maop.dwStyle = WS_CHILD  |  WS_VISIBLE;
        maop.hWndParent  = hWnd;    
        
        er = mciSendCommand(0,   MCI_OPEN,   MCI_OPEN_ELEMENT |  
MCI_ANIM_OPEN_PARENT  |   MCI_ANIM_OPEN_WS,  (DWORD)&maop);
        
        if(er){
            mciGetErrorString(  er,  str,  lstrlen(str));
            MessageBox(hWnd,  str,  "えらー"  ,MB_OK);
            return -1;
        }

        mpp.dwCallback  =  (DWORD)hWnd;
        mciSendCommand( maop.wDeviceID   ,MCI_PLAY   ,0   ,(DWORD)
&maop);
        return 0;

           case WM_DESTROY:
        mciSendCommand(maop.wDeviceID,   MCI_CLOSE  ,0,   0);
        PostQuitMessage( 0 );
        return 0;
    }
    return DefWindowProc( hWnd, msg, wp, lp );
}

subaru 2007/02/22(木) 10:10:19
提示のソースでは意味がありませんが、
mciSendCommandでMCI_NOTIFYフラグを指定すると
dwCallbackメンバに指定されたウインドウに
MM_MCINOTIFYメッセージがポストされます。
繰り返し再生などをする場合は必要です。

オープン、クローズ時はMCI_WAITフラグも
指定した方がいいと思います。

DD7 2007/02/22(木) 12:21:28
[[解決]]
回答どうもありがとうございます。

>繰り返し再生などをする場合は必要です。
>オープン、クローズ時はMCI_WAITフラグも
指定した方がいいと思います。

いろいろ教えていただきまして
ありがとうございます!

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