最近在写一个小程式,需要播放语音档案,第一次用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也
不行,想请问应该要怎么写才能顺利地将变量传入播放,谢谢!!