// ■AVIファイルの再生 // @ファイル名を指定するとファイルを読み込んで再生します。 // AAVI表示領域外で右ボタンをクリックすると閉じます。 // B上記Aで閉じた後、左ボタンをクリックすると上記@の状態になります。 #include "myWin.h" #pragma comment(lib,"winmm.lib") static HWND hM; static MCI_PLAY_PARMS playP; static MCI_GENERIC_PARMS geneP; static MCI_ANIM_OPEN_PARMS openP; static OPENFILENAME CC;BYTE dtBuff[16]; static TCHAR strFile[1024],strFileTitle[128];TCHAR msg[4200]; static TCHAR sFilter[]=TEXT("AVI Files\0*.avi\0All Files\0*.*\0"); void procLButtonUp(HWND hw, WPARAM wp,LPARAM lp){ TCHAR str[1024]; if(GetOpenFileName(&CC)){ openP.dwCallback=(DWORD)hw; openP.lpstrDeviceType=TEXT("avivideo"); openP.lpstrElementName=strFile; TEXT("D:\\test.avi"); openP.dwStyle=WS_CHILD|WS_VISIBLE; openP.hWndParent=hw; int iErr=mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT| MCI_ANIM_OPEN_PARENT|MCI_ANIM_OPEN_WS, (DWORD_PTR)&openP); if(iErr){ mciGetErrorString(iErr,str,1024); MessageBox(hw,str,NULL,MB_OK); } else{ playP.dwCallback=(DWORD)hw; mciSendCommand(openP.wDeviceID,MCI_PLAY,0,(DWORD)&playP); } } } void procRButtonUp(HWND hw, WPARAM wp,LPARAM lp){ mciSendCommand(openP.wDeviceID,MCI_STOP,0,(DWORD_PTR)&geneP); mciSendCommand(openP.wDeviceID,MCI_CLOSE,0,(DWORD_PTR)&geneP); } void procCreate(HWND hw, WPARAM wp,LPARAM lp){ CC.lStructSize =sizeof(OPENFILENAME); CC.hwndOwner =hw ; CC.hInstance =hInstance; CC.lpstrFilter =sFilter ; CC.nFilterIndex =1; CC.lpstrCustomFilter=NULL ; CC.nMaxCustFilter=0; CC.lpstrFile =strFile ; CC.nMaxFile =1024; CC.lpstrFileTitle =strFileTitle; CC.nMaxFileTitle =128; CC.lpstrInitialDir =TEXT("D:\\"); CC.lpstrTitle =TEXT("AVI再生"); CC.lpstrDefExt =TEXT("AVI") ; CC.FlagsEx =0; CC.Flags =OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_DONTADDTORECENT |OFN_NOTESTFILECREATE; SetWindowText(hw,TEXT("AVIファイルの再生")); MoveWindow(hw,0,0,800,500,TRUE); procLButtonUp(hw, wp, lp); } LRESULT CALLBACK WndProc(HWND hw, UINT msg, WPARAM wp,LPARAM lp){ switch(msg){ case WM_DESTROY : PostQuitMessage(0) ;return 0; case WM_CREATE : procCreate(hw,wp,lp) ;return 0; case WM_LBUTTONUP: procLButtonUp(hw,wp,lp);return 0; case WM_RBUTTONUP: procRButtonUp(hw,wp,lp);return 0; } return DefWindowProc(hw,msg,wp,lp); }