Thử hết r là thử gì v bạn.
Ý là bạn chạy thử đoạn code như này hả.
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
int main()
{
std::cout << "Sound playing... enjoy....!!!";
PlaySound(TEXT("a_sd.wav"), NULL, SND_FILENAME | SND_LOOP | SND_ASYNC);
return 0;
}
Nếu v thì không có tiếng gì đâu, chương trình cứ thế mà thoát th.
Trc tiên thì mình hỏi bạn là khi bạn chạy đoạn code dưới có phát ra âm thanh như bình thường không.
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
int main()
{
std::cout << "Sound playing... enjoy....!!!";
PlaySound(TEXT("a_sd.wav"), NULL, SND_FILENAME);
return 0;
}
Nếu không có tiếng gì thì bạn kiểm tra lại file.wav có đúng đường dẫn chưa, file này có đúng định dạng không, phát ra âm thanh có ổn không.
Nếu có âm thanh thì ok r.
Lý do đoạn code đầu tiên không có tiếng là do… nó chạy xong r.
Không ít thì nhiều bạn hẳn phải biết cái flag SND_ASYNC
tại sao nó tên như vậy nhỉ.
async là bật đồng bộ chứ còn gì nữa.
Chính vì là bất đồng bộ nên nó mới không quan tâm hàm PlaySound
khi nào thì xong mà cứ thế chạy tiếp câu lệnh tiếp theo (return 0
) => thoát chg trình. :V :V
Muốn không thoát thì phải khiến cho chg trình tiếp tục hoạt động.
Đơn giản thì chỉ cần thêm while (true);
trước return 0;
là ngon chứ gì.
Nhưng làm v nó cực ngốn CPU, vì chg trình phải loop liên tục mà không làm gì.
Thay vì loop ta vẫn có thể bắt chg trình chờ mà không ngốn CPU đó là dùng input. =]]
Thay while (true);
bằng std::cin.ignore();
là được.
P/S: thiếu #include <iostream>
.