1 #pragma once 2 class IconMgr 3 { 4 public: 5 IconMgr(); 6 ~IconMgr(); 7 8 enum IconType 9 { // 命名以其(点击时的)功能为准 10 IT_App, // 应用图标 11 IT_App_Monochrome, // 应用图标(单色) 12 IT_Stop, // 停止 13 IT_Play, // 播放 14 IT_Pause, // 暂停 15 IT_Play_Pause, // 播放/暂停 16 IT_Previous, // 上一曲 17 IT_Next, // 下一曲 18 IT_Favorite_On, // 添加到我喜欢的音乐(空心♥) 19 IT_Favorite_Off, // 从我喜欢的音乐移除(实心♥) 20 IT_Media_Lib, // 媒体库 21 IT_Playlist, // 播放列表 22 23 IT_Menu, // 菜单 24 IT_Full_Screen_On, // 进入全屏 25 IT_Full_Screen_Off, // 退出全屏 26 IT_Minimize, // 最小化 27 IT_Maxmize_On, // 进入最大化 28 IT_Maxmize_Off, // 退出最大化 29 IT_Close, // 关闭 30 31 IT_Play_Order, // 顺序播放 32 IT_Loop_Playlist, // 列表循环 33 IT_Loop_Track, // 单曲循环 34 IT_Play_Shuffle, // 无序播放 35 IT_Play_Random, // 随机播放 36 IT_Play_Track, // 单曲播放 37 IT_Setting, // 设置 38 IT_Equalizer, // 均衡器 39 IT_Skin, // 切换界面(皮肤) 40 IT_Mini_On, // 进入迷你模式 41 IT_Mini_Off, // 退出迷你模式 42 IT_Info, // 曲目信息 43 IT_Find, // 查找歌曲 44 IT_Dark_Mode_On, // 进入深色模式(月亮) 45 IT_Dark_Mode_Off, // 退出深色模式(太阳) 46 IT_Volume0, // 音量: 静音 47 IT_Volume1, // 音量: ) 48 IT_Volume2, // 音量: )) 49 IT_Volume3, // 音量: ))) 50 IT_Switch_Display, // 切换显示(xml界面堆栈元素) 51 52 IT_Folder, // 文件夹 53 IT_Music, // 音符/打开文件 54 IT_Link, // 曲别针/链接 55 IT_Exit, // 退出 56 IT_Rewind, // 快退 57 IT_Fast_Forward, // 快进 58 IT_Speed_Up, // 加速播放 59 IT_Slow_Down, // 减速播放 60 IT_Add, // 添加 61 IT_Save, // 保存 62 IT_Save_As, // 另存为 63 IT_Sort_Mode, // 排序模式 64 IT_Playlist_Display_Mode, // 播放列表显示方式 65 IT_Locate, // 定位 66 IT_Lyric, // 歌词 67 IT_Copy, // 复制 68 IT_Edit, // 编辑 69 IT_Unlink, // 取消关联 70 IT_Folder_Explore, // 文件夹浏览/搜索 71 IT_Internal_Lyric, // 内嵌歌词 72 IT_Download, // 下载 73 IT_Download_Batch, // 批量下载 74 IT_Playlist_Dock, // 停靠播放列表/视图 75 IT_Playlist_Float, // 浮动播放列表 76 IT_Pin, // 图钉/置顶 77 IT_Convert, // 格式转换 78 IT_Online, // 在线查看 79 IT_Shortcut, // 快捷方式 80 IT_Album_Cover, // 专辑封面 81 IT_Statistics, // 统计 82 IT_File_Relate, // 文件关联 83 IT_Help, // 帮助 84 IT_Fix, // 扳手/修复 85 IT_Star, // 星星/分级 86 IT_Artist, // 艺术家 87 IT_Album, // 专辑 88 IT_Genre, // 流派 89 IT_Year, // 年份 90 IT_Bitrate, // 比特率 91 IT_History, // 最近播放 92 IT_Key_Board, // 快捷键 93 IT_Reverb, // 混响 94 IT_Double_Line, // 双行 95 IT_Lock, // 锁/桌面歌词锁定 96 IT_Play_As_Next, // 下一首播放 97 IT_Rename, // 重命名 98 IT_Play_In_Playlist, // 添加到新播放列表并播放 99 IT_Play_In_Folder, // 在文件夹模式中播放 100 IT_Tag, // 标签 101 IT_More, // 更多 102 IT_NowPlaying, // 正在播放 103 IT_Karaoke, // 歌词卡拉OK效果 104 IT_Refresh, // 刷新 105 IT_NewFolder, // 添加新文件夹 106 IT_Background, // 背景穿透 107 108 IT_Le_Tag_Insert, // Le 插入时间标签 109 IT_Le_Tag_Replace, // Le 替换时间标签 110 IT_Le_Tag_Delete, // Le 删除时间标签 111 IT_Le_Save, // Le 保存 112 IT_Le_Find, // Le 文本查找 113 IT_Le_Replace, // Le 文本替换 114 115 IT_Triangle_Left, // 向左三角形 116 IT_Triangle_Up, // 向上三角形 117 IT_Triangle_Right, // 向右三角形 118 IT_Triangle_Down, // 向下三角形 119 120 IT_Ok, // 圆/确认 121 IT_Cancel, // 叉/取消 122 123 IT_TreeCollapsed, // 折叠的树节点 124 IT_TreeExpanded, // 展开的树节点 125 126 IT_Default_Cover_Playing, // 默认封面(播放中) 127 IT_Default_Cover_Stopped, // 默认封面(已停止) 128 129 IT_NO_ICON, 130 }; 131 132 enum IconStyle 133 { 134 IS_Auto, 135 IS_OutlinedDark, // 深色的图标(浅色模式用) 136 IS_OutlinedLight, // 浅色的图标(深色模式用) 137 IS_Filled, 138 IS_Color, 139 }; 140 141 enum IconSize 142 { 143 IS_DPI_16, 144 IS_DPI_16_Full_Screen, 145 IS_DPI_20, 146 IS_DPI_20_Full_Screen, 147 IS_DPI_32, 148 IS_DPI_32_Full_Screen, 149 IS_ORG_512, 150 IS_ALL, 151 }; 152 153 // 获取需要的图标,不要在代码中大量直接调用 154 // 请为同类调用提供一层包装以免之后修改困难 155 HICON GetHICON(IconType type, IconStyle style, IconSize size); 156 GetIconSize(IconSize size)157 static CSize GetIconSize(IconSize size) 158 { 159 int width = GetIconWidth(size); 160 return CSize(width, width); 161 } 162 static int GetIconWidth(IconSize size); 163 164 private: 165 MakeKey(IconType type,IconStyle style,IconSize size)166 int MakeKey(IconType type, IconStyle style, IconSize size) 167 { 168 ASSERT(style < 10 && size < 10); 169 return type * 100 + style * 10 + size; 170 } 171 std::tuple<UINT, UINT, UINT, UINT> GetIconID(IconType type); 172 173 std::map<int, HICON> m_icon_map; 174 std::shared_mutex m_shared_mutex; // 线程同步对象 175 }; 176 177