-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAlarmSound.cpp
More file actions
83 lines (70 loc) · 4.27 KB
/
Copy pathAlarmSound.cpp
File metadata and controls
83 lines (70 loc) · 4.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "AlarmSound.h"
#include <mmsystem.h>
#include <map>
#pragma comment(lib, "winmm.lib")
map<wstring, RingtoneInfo> AlarmSound::ringtone_map;
void AlarmSound::init_ringtone_map()
{
if (!ringtone_map.empty()) return; //已初始化
//初始化映射表(中文歌曲)
ringtone_map[L"啵啵颂"] = {L"啵啵颂", L"Bo Bo Anthem.wav", IDR_ALARM_BO_BO_ANTHEM};
ringtone_map[L"打火基"] = {L"打火基", L"Da Huo Kimi.wav", IDR_ALARM_DA_HUO_KIMI};
ringtone_map[L"大东北我的家乡"] = {L"大东北我的家乡", L"My Homeland The Great Northeast.wav", IDR_ALARM_MY_HOMELAND_THE_GREAT_NORTHEAST};
ringtone_map[L"高雅人士评鉴歌"] = {L"高雅人士评鉴歌", L"Song for the Elite Critics.wav", IDR_ALARM_SONG_FOR_THE_ELITE_CRITICS};
ringtone_map[L"哈基米起床"] = {L"哈基米起床", L"Hakimi, Rise and Shine.wav", IDR_ALARM_HAKIMI_RISE_AND_SHINE};
ringtone_map[L"基米说"] = {L"基米说", L"Kimi Speaks.wav", IDR_ALARM_KIMI_SPEAKS};
ringtone_map[L"惊雷"] = {L"惊雷", L"Thunder.wav", IDR_ALARM_THUNDER};
ringtone_map[L"蓝莲哈"] = {L"蓝莲哈", L"Blue Lotus Ha.wav", IDR_ALARM_BLUE_LOTUS_HA};
ringtone_map[L"那一天的忧郁忧郁起来"] = {L"那一天的忧郁忧郁起来", L"The Gloom of That Day.wav", IDR_ALARM_THE_GLOOM_OF_THAT_DAY};
ringtone_map[L"你从丹东来"] = {L"你从丹东来", L"You Hail from Dandong.wav", IDR_ALARM_YOU_HAIL_FROM_DANDONG};
ringtone_map[L"社会主义好"] = {L"社会主义好", L"Socialism is Great.wav", IDR_ALARM_SOCIALISM_IS_GREAT};
ringtone_map[L"时代少年团"] = {L"时代少年团", L"Teen Times Band.wav", IDR_ALARM_TEEN_TIMES_BAND};
ringtone_map[L"天雷滚滚我好怕怕"] = {L"天雷滚滚我好怕怕", L"Thunder Rumbles, I'm Scaredy-Cat.wav", IDR_ALARM_THUNDER_RUMBLES};
ringtone_map[L"同济大学校歌"] = {L"同济大学校歌", L"Tongji University Alma Mater.wav", IDR_ALARM_TONGJI_UNIVERSITY_ALMA_MATER};
ringtone_map[L"我和比奇堡的朋友们"] = {L"我和比奇堡的朋友们", L"Me and the Bikini Bottom Pals.wav", IDR_ALARM_ME_AND_THE_BIKINI_BOTTOM_PALS};
ringtone_map[L"我是奶龙星光闪闪"] = {L"我是奶龙星光闪闪", L"I'm the Milky Dragon, Twinkling Stars.wav", IDR_ALARM_IM_THE_MILKY_DRAGON};
ringtone_map[L"越打越年轻&叮咚鸡"] = {L"越打越年轻&叮咚鸡", L"Fight to Rejuvenate & Ding Dong Chicken.wav", IDR_ALARM_FIGHT_TO_REJUVENATE};
ringtone_map[L"做个文明中国人"] = {L"做个文明中国人", L"Be a Polite Chinese Citizen.wav", IDR_ALARM_BE_A_POLITE_CHINESE_CITIZEN};
//英文歌曲(显示名称=文件名)
ringtone_map[L"Aankhen Khuli"] = {L"Aankhen Khuli", L"Aankhen Khuli.wav", IDR_ALARM_AANKHEN_KHULI};
ringtone_map[L"Bad Apple!!"] = {L"Bad Apple!!", L"Bad Apple!!.wav", IDR_ALARM_BAD_APPLE};
ringtone_map[L"Never Gonna Give You Up"] = {L"Never Gonna Give You Up", L"Never Gonna Give You Up.wav", IDR_ALARM_NEVER_GONNA_GIVE_YOU_UP};
ringtone_map[L"Sat Tee Touy"] = {L"Sat Tee Touy", L"Sat Tee Touy.wav", IDR_ALARM_SAT_TEE_TOUY};
ringtone_map[L"See You Again"] = {L"See You Again", L"See You Again.wav", IDR_ALARM_SEE_YOU_AGAIN};
ringtone_map[L"Y.M.C.A"] = {L"Y.M.C.A", L"Y.M.C.A.wav", IDR_ALARM_YMCA};
}
void AlarmSound::get_all_ringtones(RingtoneInfo** list, int& count)
{
init_ringtone_map();
count = (int)ringtone_map.size();
*list = new RingtoneInfo[count];
int i = 0;
for (auto& pair : ringtone_map)
{
(*list)[i++] = pair.second;
}
}
int AlarmSound::get_resource_id_by_name(const wstring& display_name)
{
init_ringtone_map();
auto it = ringtone_map.find(display_name);
if (it != ringtone_map.end())
{
return it->second.resource_id;
}
return IDR_ALARM_BE_A_POLITE_CHINESE_CITIZEN; //默认
}
void AlarmSound::play_alarm(const wstring& display_name)
{
int resource_id = get_resource_id_by_name(display_name);
PlaySound(MAKEINTRESOURCE(resource_id), GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC);
}
void AlarmSound::stop_alarm()
{
PlaySound(NULL, NULL, 0);
}
void AlarmSound::play_alarm_loop(const wstring& display_name)
{
int resource_id = get_resource_id_by_name(display_name);
PlaySound(MAKEINTRESOURCE(resource_id), GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC | SND_LOOP);
}