[問題] MCI播放音樂問題

作者: gingerr (安安你好)   2015-01-05 12:03:26
最近在寫一個小程式,需要播放語音檔案,第一次用MCI遇到了一點問題
以下是我的程式(開發平台Visual Studio 2010)
int main(){
PlayMp3 (( char *) _T ( "D:\\talkkk\\voice\\0001.mp3")) ;
system ( "pause" );
return 0;
}
void PlayMp3 ( char * pName )
{
UINT DeviceID ;
DeviceID = mciOpen . wDeviceID ;
if ( pName != NULL ){
mciSendCommand ( DeviceID , MCI_CLOSE , NULL , ( DWORD )& mciPlay );
char buf [128];
mciOpen . lpstrDeviceType = ( LPCWSTR ) _T ( "mpegvideo" );
mciOpen . lpstrElementName = ( LPCWSTR ) pName ;
mciError = mciSendCommand (0, MCI_OPEN , MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_ELEMENT | MCI_CLOSE | MCI_STOP | MCI_RESUME | MCI_PAUSE | MCI_PLAY
,( DWORD )& mciOpen );
if ( mciError ){
mciGetErrorString ( mciError ,( LPWSTR ) buf ,128);
return ;
}
DeviceID = mciOpen . wDeviceID ;
mciError = mciSendCommand ( DeviceID , MCI_PLAY ,0 ,( DWORD )&
mciPlay );
}
else{
if ( mciError ){
printf("播放語音失敗\n");
return ;
}
}
}
這個樣子是可以播放音樂的,但因為我要傳送到PlayMp3這個function的檔名是一個變數
,所以我把他改寫成
int main(){
char f_voice[30]="D:\\talkkk\\voice\\";
char f_voiceend[10]=".mp3";
char namebuffer[50]="0001";//這個變數會隨需求改變
char f_voicefinal[40];
strcpy(f_voicefinal,f_voice);
strcat(f_voicefinal,namebuffer);
strcat(f_voicefinal,f_voiceend);
PlayMp3 (( char *) voicefinal);
system ( "pause" );
return 0;
}
當然這樣是不能播放的,試過fv.Format(_T("%S"),f_voicefinal);將char轉成CString也
不行,想請問應該要怎麼寫才能順利地將變數傳入播放,謝謝!!
作者: bibo9901 (function(){})()   2015-01-05 13:11:00
有error message 嗎? 這樣只看到你voicefinal名字寫錯少了f_

Links booklink

Contact Us: admin [ a t ] ucptt.com