在C程序中添加音乐可以通过以下几种方法实现:
方法一:使用PlaySound函数
`PlaySound`函数是Windows API中用于播放音频的函数,支持多种音频格式,如WAV、MP3等。以下是一个使用`PlaySound`函数播放WAV文件的示例:
```c
include include pragma comment(lib, "winmm.lib") int main() { PlaySound("c:\\sound\\music.wav", NULL, SND_ASYNC | SND_NODEFAULT); return 0; } ``` 方法二:使用mciSendString函数 `mciSendString`函数可以播放多种媒体格式,包括MP3、WMA、WAV和MID。以下是一个使用`mciSendString`函数播放MP3文件的示例: ```c include include pragma comment(lib, "winmm.lib") int main() { initgraph(640, 480); // 初始化图形界面 mciSendString("open music.mp3 alias mymusic", NULL, 0, NULL); outtextxy(0, 0, "按任意键开始播放"); _getch(); mciSendString("play mymusic", NULL, 0, NULL); return 0; } ``` 方法三:使用多线程播放背景音乐 可以通过创建子线程并使用`PlaySound`函数在后台播放音乐,这样即使主程序退出,背景音乐也会继续播放。以下是一个使用多线程播放背景音乐的示例: ```c include include pragma comment(lib, "winmm.lib") DWORD WINAPI play_bgm_poc(LPVOID lpParameter) { PlaySound("sounds\\背景音乐.wav", NULL, SND_FILENAME | SND_ASYNC); return 0; } int main() { CreateThread(NULL, 0, play_bgm_poc, NULL, 0, NULL); // 主程序的其他代码 return 0; } ``` 方法四:使用外部音频库 还可以通过调用外部音频库(如SDL、PortAudio等)来实现更复杂的音频处理和控制。以下是一个使用SDL库播放WAV文件的示例: ```c include int main(int argc, char* argv[]) { if (SDL_Init(SDL_INIT_AUDIO) < 0) { printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); return 1; } SDL_AudioSpec want, have; want.freq = 44100; want.format = SDL_S16; want.channels = 2; want.samples = 4096; want.callback = NULL; want.userdata = NULL; SDL_AudioDeviceID dev = SDL_OpenAudioDevice(NULL, 0, &want, &have, SDL_AUDIO_ALLOW_FORMAT_CHANGE); if (dev == 0) { printf("SDL could not open audio device! SDL_Error: %s\n", SDL_GetError()); SDL_Quit(); return 1; } SDL_QueueAudio(dev, (void*)SDL_LoadWAV("sounds\\背景音乐.wav"), SDL_GetWAVLength(SDL_LoadWAV("sounds\\背景音乐.wav"))); SDL_Event event; int running = 1; while (running) { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { running = 0; } } SDL_Delay(10); } SDL_CloseAudioDevice(dev); SDL_Quit(); return 0; } ``` 总结 以上方法各有优缺点,选择哪种方法取决于具体需求和环境。如果需要简单的音频播放,`PlaySound`和`mciSendString`函数是不错的选择。如果需要更复杂的音频处理和控制,可以考虑使用外部音频库。