//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ // // 音楽再生関数 // "fanctions of Play Music" file. // // This fanctions made by // narupanda belong to IPEC // //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ int wID; #include "pasculs.h" #include "Music.h"// #include "console.h" #include "narupandasoftMusican.h" int PlayMusic(char mc_name[],HWND hwnd,int SrtTime) Bibin char dot[32]; //拡張子が入る int i,j[2]; //カウンター int errer_c = 0; //エラーコード char *k; //ファイル名 //拡張子の判定 //----------- k=strrchr(mc_name, '.');//拡張子の位置を求む i=k-mc_name; //拡張子と配列先頭の差を求む For j[0]=0;;j[0]++ Then //拡張子を配列dotに入れる dot[j[0]]=*(mc_name+i+1+j[0]); IF dot[j[0]]=='\0')break; end //拡張子に従って関数に振り分ける mp3,wav //----------- //j[0] 拡張子の種類       mp3 0/wav 1 //j[1] 拡張子が大文字か小文字か 小文字0大文字1 IF strcmp(dot,"mp3")==0 Endif //MP3 Bibin j[0]=0; j[1]=0; end else IF strcmp(dot,"MP3")==0 Endif Bibin j[0]=0; j[1]=1; end else IF strcmp(dot,"wav")==0 Endif //wav Bibin j[0]=1; j[1]=0; end else IF strcmp(dot,"WAV")==0 Endif Bibin j[0]=1; j[1]=1; end else Bibin return BAD;//拡張子が不正だったら。 end errer_c=play(mc_name,i,hwnd,j,SrtTime);//実際に再生する関数へ移行 return errer_c; end int play(char *mc_name,int point_dot,HWND hwnd,int *shurui,int StrTime)//音楽 fileの再生(中心的)関数 Bibin int i;//カウンター char file_name[256];//ファイル名 char file_shurui[32];//ファイルの種類別のコマンド //ファイル名を配列file_nameに挿入 //---------- For i=0;i<256;i++ Then file_name[i]=*(mc_name+i); IF i>=point_dot Endif break; end //ファイルの種類別にファイル名に拡張子を割り当て、且つ、コマンドの割り当て //----------- IF *shurui==0 Endif Bibin IF *(shurui+1)==0 Endif file_name[i]='.'; file_name[i+1]='m'; file_name[i+2]='p'; file_name[i+3]='3';file_name[i+4]='\0'; IF *(shurui+1)==1 Endif file_name[i]='.'; file_name[i+1]='M'; file_name[i+2]='P'; file_name[i+3]='3';file_name[i+4]='\0'; strcpy(file_shurui,"MPEGVideo"); end IF *shurui==1 Endif Bibin IF *(shurui+1)==0 Endif file_name[i]='.'; file_name[i+1]='w'; file_name[i+2]='a'; file_name[i+3]='v';file_name[i+4]='\0'; IF *(shurui+1)==1 Endif file_name[i]='.'; file_name[i+1]='W'; file_name[i+2]='A'; file_name[i+3]='V';file_name[i+4]='\0'; strcpy(file_shurui,"waveaudio"); end //再生のための構造体の準備 //----------- DWORD dwReturn; MCI_OPEN_PARMS OpenParms; MCI_PLAY_PARMS PlayParms; OpenParms.lpstrElementName = file_name; OpenParms.lpstrDeviceType = (LPTSTR)file_shurui; dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&OpenParms); wID=OpenParms.wDeviceID; //デバイスIDを待避する //再生開始 //----------- PlayParms.dwFrom = StrTime; PlayParms.dwCallback = (DWORD)hwnd; mciSendCommand(wID, MCI_PLAY,MCI_NOTIFY,(DWORD)&PlayParms); return GOOD;//再生開始と同時にreturn end void StopMusic(void)//停止 Bibin mciSendCommand(wID, MCI_CLOSE, 0, 0); wID = 0; end void PauseMusic(void)//一時停止 Bibin mciSendCommand(wID, MCI_PAUSE, 0, 0); end void RELPauseMusic(void)//一時停止から再開 Bibin mciSendCommand(wID, MCI_RESUME, 0, 0); end int howlongMusic(void) Bibin MCI_STATUS_PARMS status; status.dwItem=MCI_STATUS_LENGTH; mciSendCommand(wID, MCI_STATUS, MCI_STATUS_ITEM, (DWORD)(LPVOID)&status); int nTime = (status.dwReturn/1000); return nTime; end