2017-07-27 9 views
0

私はタイマーを作って、最後に音を出そうとしています。私はタイマーを作って、それは正常に動作しますが、サウンドは再生されません。タイマーがゼロになったらサウンドを再生するには?

int main() { 
    //cout << "This is a timer. It is still in the making but it the seconds work properly." << endl; 
    //Sleep(7000); 
    //system("CLS"); 

    int input; 

    cout << "Enter a time: "; 
    cin >> input; 
    cout << endl << "Begin." << endl; 
    system("CLS"); 

    while (input != 0) { 
     input--; 
     cout << input << " seconds" << endl; 
     Sleep(200); 
     system("CLS"); 

     if (input == 0) { 
      PlaySound(TEXT("C:\\Users\\iD Student\\Downloads\\Never_Gonna_Hit_Those_Notes.wav"), NULL, SND_FILENAME | SND_ASYNC); 
     } 
    } 
} 
+3

サウンドを非同期モードで再生しています。サウンドが再生される前にメインが終了すると思います。 'SND_ASYNC'を削除してください。 – DimChtz

+0

ありがとうDim! 'SND_ASYNC'を削除すると修正されました。 –

答えて

0

他の人が述べたように、SND_ASYNCフラグが犯人である、あなたはそれを削除する必要がありますこれは私がこれまでにしたものです。

PlaySound()をループ外に移動するコードを再構築することをお勧めします。ループ内でinputを0回に何度もチェックする必要はありません。ループが終了すると、ループの後のコードが呼び出されます。

const char* plural[] = {"", "s"}; 

int main() 
{ 
    int input; 

    cout << "Enter # of seconds: "; 
    cin >> input; 

    system("CLS"); 
    cout << "Begin." << endl; 

    while (input > 0) 
    { 
     system("CLS"); 
     cout << input << " second" << plural[input != 1] << endl; 
     Sleep(1000); 
     --input; 
    } 

    system("CLS"); 
    cout << "Done." << endl; 

    PlaySound(TEXT("C:\\Users\\iD Student\\Downloads\\Never_Gonna_Hit_Those_Notes.wav"), NULL, SND_FILENAME); 

    return 0; 
} 
-1

が終わりSND_ASYNCを取り除く:

int main() 
{ 
    int input; 

    cout << "Enter a time: "; 
    cin >> input; 
    cout << endl << "Begin." << endl; 
    system("CLS"); 

    while (input != 0) { 
     input--; 
     cout << input << " seconds" << endl; 
     Sleep(200); 
     system("CLS"); 

     if (input == 0) { 
      PlaySound(TEXT("C:\\Users\\iD Student\\Downloads\\Never_Gonna_Hit_Those_Notes.wav"), NULL, SND_FILENAME); 
     } 
    } 
} 
関連する問題