xref: /MusicPlayer2/MusicPlayer2/AppearanceSettingDlg.cpp (revision 1c827ad792140918617518cdf8b7156c522e3c66)
1 // AppearanceSettingDlg.cpp : 实现文件
2 //
3 
4 #include "stdafx.h"
5 #include "MusicPlayer2.h"
6 #include "AppearanceSettingDlg.h"
7 #include "FilterHelper.h"
8 
9 
10 // CAppearanceSettingDlg 对话框
11 
IMPLEMENT_DYNAMIC(CAppearanceSettingDlg,CTabDlg)12 IMPLEMENT_DYNAMIC(CAppearanceSettingDlg, CTabDlg)
13 
14 CAppearanceSettingDlg::CAppearanceSettingDlg(CWnd* pParent /*=NULL*/)
15     : CTabDlg(IDD_APPEREANCE_SETTING_DLG, pParent)
16 {
17 
18 }
19 
~CAppearanceSettingDlg()20 CAppearanceSettingDlg::~CAppearanceSettingDlg()
21 {
22 }
23 
InitializeControls()24 bool CAppearanceSettingDlg::InitializeControls()
25 {
26     wstring temp;
27     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_VISUAL_EFFECTS");
28     SetDlgItemTextW(IDC_VISUAL_EFFECTS_STATIC, temp.c_str());
29     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SPECTRUM_SHOW");
30     SetDlgItemTextW(IDC_SHOW_SPECTRUM_CHECK, temp.c_str());
31     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SPECTRUM_LOW_FREQ_IN_CENTER");
32     SetDlgItemTextW(IDC_LOW_FREQ_IN_CENTER_CHECK, temp.c_str());
33     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SPECTRUM_HEIGHT");
34     SetDlgItemTextW(IDC_TXT_SPECTRUM_HIGHT_STATIC, temp.c_str());
35     // IDC_SPECTRUM_HEIGHT_SLIDER
36     // IDC_SPECTRUM_HEIGHT_STATIC
37     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_SHOW");
38     SetDlgItemTextW(IDC_SHOW_ALBUM_COVER_CHECK, temp.c_str());
39     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT");
40     SetDlgItemTextW(IDC_TXT_COVER_FIT_STATIC, temp.c_str());
41     // IDC_ALBUM_FIT_COMBO
42     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_LYRIC_BG");
43     SetDlgItemTextW(IDC_LYRIC_BACKGROUND_CHECK, temp.c_str());
44     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_ROUND_CORNERS");
45     SetDlgItemTextW(IDC_BTN_ROUND_CORNERS_CHECK, temp.c_str());
46     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_DARK_MODE");
47     SetDlgItemTextW(IDC_DARK_MODE_CHECK, temp.c_str());
48     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_MAIN_WINDOW_TRANSPARENCY");
49     SetDlgItemTextW(IDC_TXT_TRANSPARENT_STATIC, temp.c_str());
50     // IDC_TRANSPARENT_SLIDER
51     // IDC_TRANSPARENT_STATIC
52 
53     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_SETTING");
54     SetDlgItemTextW(IDC_TXT_BG_SETTING_STATIC, temp.c_str());
55     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_ENABLE");
56     SetDlgItemTextW(IDC_ENABLE_BACKGROUND_CHECK, temp.c_str());
57     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_USE_DESKTOP");
58     SetDlgItemTextW(IDC_USE_DESKTOP_BACKGROUND_CHECK, temp.c_str());
59     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_TRANSPARENCY");
60     SetDlgItemTextW(IDC_TXT_BG_TRANSPARENCY_STATIC, temp.c_str());
61     // IDC_BACKGROUND_TRANSPARENCY_SLIDER
62     // IDC_BACKGROUND_TRANSPARENCY_STATIC
63     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_USE_COVER");
64     SetDlgItemTextW(IDC_ALBUM_COVER_BACKGROUND_CHECK, temp.c_str());
65     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_GAUSS_BLUR");
66     SetDlgItemTextW(IDC_BACKGROUND_GAUSS_BLUR_CHECK, temp.c_str());
67     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_GAUSS_BLUR_RADIUS");
68     SetDlgItemTextW(IDC_TXT_GAUSS_BLUR_RADIUS_STATIC, temp.c_str());
69     // IDC_GAUSS_BLURE_RADIUS_SLIDER
70     // IDC_GAUSS_BLUR_RADIUS_STATIC
71     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_DEFAULT_IMAGE");
72     SetDlgItemTextW(IDC_TXT_DEFAULT_BG_PATH_EDIT_STATIC, temp.c_str());
73     // IDC_DEFAULT_BACKGROUND_PATH_EDIT
74 
75     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OPT");
76     SetDlgItemTextW(IDC_TXT_COVER_OPT_STATIC, temp.c_str());
77     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_USE_INNER_FIRST");
78     SetDlgItemTextW(IDC_USE_INNER_IMAGE_FIRST_CHECK, temp.c_str());
79     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OUT_IMAGE_ALLOW");
80     SetDlgItemTextW(IDC_USE_OUT_IMAGE_CHECK, temp.c_str());
81     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OUT_IMAGE_FILE_NAME");
82     SetDlgItemTextW(IDC_TXT_EXT_COVER_FILE_NAME_STATIC, temp.c_str());
83     // IDC_DEFAULT_COVER_NAME_EDIT
84     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OUT_FOLDER");
85     SetDlgItemTextW(IDC_TXT_EXT_COVER_FOLDER_STATIC, temp.c_str());
86     // IDC_ALBUM_COVER_PATH_EDIT
87 
88     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_THEME");
89     SetDlgItemTextW(IDC_TXT_THEME_COLOR_STATIC, temp.c_str());
90     // IDC_COLOR_STATIC
91     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_PRESET");
92     SetDlgItemTextW(IDC_PRESET_COLOR_STATIC, temp.c_str());
93     // IDC_COLOR_STATIC2
94     // IDC_COLOR_STATIC3
95     // IDC_COLOR_STATIC4
96     // IDC_COLOR_STATIC5
97     // IDC_COLOR_STATIC6
98     // IDC_COLOR_STATIC7
99     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_MORE");
100     SetDlgItemTextW(IDC_SET_PROGRESS_COLOR_BUTTON, temp.c_str());
101     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_FOLLOW_SYSTEM");
102     SetDlgItemTextW(IDC_FOLLOW_SYSTEM_COLOR_CHECK, temp.c_str());
103 
104     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_STATUS_BAR");
105     SetDlgItemTextW(IDC_TXT_STATUS_BAR_STATIC, temp.c_str());
106     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_ALWAYS_SHOW_STATUS_BAR");
107     SetDlgItemTextW(IDC_ALWAYS_SHOW_STATUSBAR_CHECK, temp.c_str());
108     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SHOW_NEXT_TRACK");
109     SetDlgItemTextW(IDC_SHOW_NEXT_CHECK, temp.c_str());
110     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SHOW_FPS");
111     SetDlgItemTextW(IDC_SHOW_FPS_CHECK, temp.c_str());
112 
113     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR");
114     SetDlgItemTextW(IDC_TXT_TITLE_BAR_STATIC, temp.c_str());
115 
116     SetDlgControlText(IDC_USE_SYSTEM_TITLEBAR_RADIO, L"TXT_OPT_APC_USE_SYSTEM_TITLE_BAR");
117     SetDlgControlText(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO, L"TXT_OPT_APC_USE_OWNER_DRAW_TITLE_BAR");
118 
119     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_SEL");
120     SetDlgItemTextW(IDC_TXT_TITLE_BAR_BTN_SEL_STATIC, temp.c_str());
121     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_SETTING");
122     SetDlgItemTextW(IDC_SHOW_SETTINGS_BTN_CHECK, temp.c_str());
123     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_SKIN");
124     SetDlgItemTextW(IDC_SHOW_SKIN_BTN_CHECK, temp.c_str());
125     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_MINI_MODE");
126     SetDlgItemTextW(IDC_SHOW_MINI_MODE_BTN_CHECK, temp.c_str());
127     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_FULLSCREEN");
128     SetDlgItemTextW(IDC_SHOW_FULLSCREEN_BTN_CHECK, temp.c_str());
129     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_MINIMIZE");
130     SetDlgItemTextW(IDC_SHOW_MINIMIZE_BTN_CHECK, temp.c_str());
131     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_MAXIMIZE");
132     SetDlgItemTextW(IDC_SHOW_MAXIMIZE_BTN_CHECK, temp.c_str());
133     SetDlgControlText(IDC_SHOW_DARK_LIGHT_BTN_CHECK, L"TXT_OPT_APC_TITLE_BAR_BTN_DARK_KIGHT");
134 
135     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON");
136     SetDlgItemTextW(IDC_NA_ICO_STATIC, temp.c_str());
137     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_PREVIEW");
138     SetDlgItemTextW(IDC_PREVIEW_STATIC, temp.c_str());
139     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_SEL");
140     SetDlgItemTextW(IDC_TXT_NA_ICO_SEL_STATIC, temp.c_str());
141     // IDC_COMBO1
142     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_AUTO_ADAPT");
143     SetDlgItemTextW(IDC_NOTIFY_ICON_AUTO_ADAPT_CHECK, temp.c_str());
144 
145     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_ADVANCED");
146     SetDlgItemTextW(IDC_TXT_ADV_STATIC, temp.c_str());
147     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_UI_REFRESH_INTERVAL");
148     SetDlgItemTextW(IDC_TXT_UI_INTERVAL_STATIC, temp.c_str());
149     // IDC_UI_INTERVAL_EDIT
150     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_UI_REFRESH_INTERVAL_RESTORE");
151     SetDlgItemTextW(IDC_RESTORE_DEFAULT_BUTTON, temp.c_str());
152     temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_HQ");
153     SetDlgItemTextW(IDC_DEFAULT_ALBUM_COVER_HQ, temp.c_str());
154 
155     return true;
156 }
157 
DoDataExchange(CDataExchange * pDX)158 void CAppearanceSettingDlg::DoDataExchange(CDataExchange* pDX)
159 {
160     CTabDlg::DoDataExchange(pDX);
161     DDX_Control(pDX, IDC_TRANSPARENT_SLIDER, m_transparency_slid);
162     DDX_Control(pDX, IDC_COLOR_STATIC, m_color_static);
163     DDX_Control(pDX, IDC_COLOR_STATIC2, m_color_static1);
164     DDX_Control(pDX, IDC_COLOR_STATIC3, m_color_static2);
165     DDX_Control(pDX, IDC_COLOR_STATIC4, m_color_static3);
166     DDX_Control(pDX, IDC_COLOR_STATIC5, m_color_static4);
167     DDX_Control(pDX, IDC_COLOR_STATIC6, m_color_static5);
168     DDX_Control(pDX, IDC_COLOR_STATIC7, m_color_static6);
169     DDX_Control(pDX, IDC_COLOR_STATIC8, m_color_static7);
170     DDX_Control(pDX, IDC_FOLLOW_SYSTEM_COLOR_CHECK, m_follow_system_color_check);
171     DDX_Control(pDX, IDC_SPECTRUM_HEIGHT_SLIDER, m_spectrum_height_slid);
172     DDX_Control(pDX, IDC_SHOW_ALBUM_COVER_CHECK, m_show_album_cover_chk);
173     DDX_Control(pDX, IDC_ALBUM_FIT_COMBO, m_album_cover_fit_combo);
174     DDX_Control(pDX, IDC_ALBUM_COVER_BACKGROUND_CHECK, m_album_cover_as_background_chk);
175     DDX_Control(pDX, IDC_SHOW_SPECTRUM_CHECK, m_show_spectrum_chk);
176     DDX_Control(pDX, IDC_BACKGROUND_TRANSPARENCY_SLIDER, m_back_transparency_slid);
177     DDX_Control(pDX, IDC_USE_OUT_IMAGE_CHECK, m_use_out_image_chk);
178     DDX_Control(pDX, IDC_GAUSS_BLURE_RADIUS_SLIDER, m_gauss_blur_radius_sld);
179     DDX_Control(pDX, IDC_BACKGROUND_GAUSS_BLUR_CHECK, m_background_gauss_blur_chk);
180     DDX_Control(pDX, IDC_LYRIC_BACKGROUND_CHECK, m_lyric_background_chk);
181     DDX_Control(pDX, IDC_DARK_MODE_CHECK, m_dark_mode_chk);
182     DDX_Control(pDX, IDC_USE_INNER_IMAGE_FIRST_CHECK, m_use_inner_image_first_chk);
183     DDX_Control(pDX, IDC_ENABLE_BACKGROUND_CHECK, m_enable_background_chk);
184     DDX_Control(pDX, IDC_LOW_FREQ_IN_CENTER_CHECK, m_low_freq_in_center_chk);
185     DDX_Control(pDX, IDC_DEFAULT_ALBUM_COVER_HQ, m_default_cover_hq_chk);
186     DDX_Control(pDX, IDC_UI_INTERVAL_EDIT, m_ui_refresh_interval_edit);
187     DDX_Control(pDX, IDC_COMBO1, m_icon_select_combo);
188     DDX_Control(pDX, IDC_NOTIFY_ICON_AUTO_ADAPT_CHECK, m_notify_icon_auto_adapt_chk);
189     DDX_Control(pDX, IDC_BTN_ROUND_CORNERS_CHECK, m_btn_round_corners_chk);
190     DDX_Control(pDX, IDC_DEFAULT_BACKGROUND_PATH_EDIT, m_default_background_edit);
191     DDX_Control(pDX, IDC_DEFAULT_COVER_NAME_EDIT, m_album_cover_name_edit);
192     DDX_Control(pDX, IDC_ALBUM_COVER_PATH_EDIT, m_album_cover_path_edit);
193 }
194 
SetTransparency()195 void CAppearanceSettingDlg::SetTransparency()
196 {
197     ::SetWindowLong(m_hMainWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
198     ::SetLayeredWindowAttributes(m_hMainWnd, 0, m_data.window_transparency * 255 / 100, LWA_ALPHA);  //透明度取值范围为0~255
199 }
200 
ClickColor()201 void CAppearanceSettingDlg::ClickColor()
202 {
203     //点击了预置颜色中的其中一个时,取消“跟随系统主题色”复选按钮的选中
204     m_color_static.SetFillColor(m_data.theme_color.original_color);
205     m_data.theme_color_follow_system = false;
206     m_follow_system_color_check.SetCheck(FALSE);
207     //GetDlgItem(IDC_SET_PROGRESS_COLOR_BUTTON)->EnableWindow();
208 }
209 
SpectrumHeightChg(int value)210 int CAppearanceSettingDlg::SpectrumHeightChg(int value)
211 {
212     int rtn;
213     rtn = static_cast<int>(22.72727272727 * std::sqrt(0.088 * value - 0.39) - 15.9090909090);
214     if (rtn < 0) rtn = 0;
215     if (rtn > 100) rtn = 100;
216     return rtn;
217 }
218 
SpectrumHeightRChg(int value)219 int CAppearanceSettingDlg::SpectrumHeightRChg(int value)
220 {
221     int rtn;
222     rtn = static_cast<int>(0.022 * value * value + 0.7 * value + 10);
223     if (rtn < 10) rtn = 10;
224     if (rtn > 300) rtn = 300;
225     return rtn;
226 }
227 
SetControlEnable()228 void CAppearanceSettingDlg::SetControlEnable()
229 {
230     m_album_cover_fit_combo.EnableWindow(m_data.show_album_cover);
231     m_album_cover_name_edit.EnableWindow(m_data.use_out_image);
232     m_album_cover_path_edit.EnableWindow(m_data.use_out_image);
233     m_spectrum_height_slid.EnableWindow(m_data.show_spectrum);
234     m_album_cover_as_background_chk.EnableWindow(m_data.enable_background);
235     m_back_transparency_slid.EnableWindow(m_data.enable_background);
236     m_background_gauss_blur_chk.EnableWindow(m_data.enable_background && m_data.album_cover_as_background);
237     m_gauss_blur_radius_sld.EnableWindow(m_data.enable_background && m_data.album_cover_as_background && m_data.background_gauss_blur);
238 
239     m_default_background_edit.EnableWindow(m_data.enable_background && !m_data.use_desktop_background);
240     EnableDlgCtrl(IDC_USE_DESKTOP_BACKGROUND_CHECK, m_data.enable_background);
241 
242     EnableDlgCtrl(IDC_SHOW_NEXT_CHECK, m_data.always_show_statusbar);
243     EnableDlgCtrl(IDC_SHOW_FPS_CHECK, m_data.always_show_statusbar);
244 
245     EnableDlgCtrl(IDC_SHOW_MINIMIZE_BTN_CHECK, !m_data.show_window_frame);
246     EnableDlgCtrl(IDC_SHOW_MAXIMIZE_BTN_CHECK, !m_data.show_window_frame);
247 }
248 
CalculatePreviewBitmapRect()249 void CAppearanceSettingDlg::CalculatePreviewBitmapRect()
250 {
251     CWnd* pStatic = GetDlgItem(IDC_PREVIEW_STATIC);
252     if (pStatic != nullptr)
253     {
254         CRect rc_static;
255         ::GetWindowRect(pStatic->GetSafeHwnd(), rc_static);
256         ScreenToClient(rc_static);
257         m_notify_icon_preview.top = rc_static.bottom + theApp.DPI(4);
258         m_notify_icon_preview.left = rc_static.left;
259         m_notify_icon_preview.right = m_notify_icon_preview.left + PREVIEW_WIDTH;
260         m_notify_icon_preview.bottom = m_notify_icon_preview.top + PREVIEW_HEIGHT;
261     }
262 
263     CWnd* use_system_titlebar_radio = GetDlgItem(IDC_USE_SYSTEM_TITLEBAR_RADIO);
264     if (use_system_titlebar_radio != nullptr)
265     {
266         ::GetWindowRect(use_system_titlebar_radio->GetSafeHwnd(), m_system_titlebar_preview_rect);
267         ScreenToClient(m_system_titlebar_preview_rect);
268         m_system_titlebar_preview_rect.bottom = m_system_titlebar_preview_rect.top - theApp.DPI(4);
269         m_system_titlebar_preview_rect.top = m_system_titlebar_preview_rect.bottom - theApp.DPI(50);
270     }
271 
272     CWnd* use_owner_draw_titlebar_radio = GetDlgItem(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO);
273     if (use_owner_draw_titlebar_radio != nullptr)
274     {
275         ::GetWindowRect(use_owner_draw_titlebar_radio->GetSafeHwnd(), m_owner_draw_titlebar_preview_rect);
276         ScreenToClient(m_owner_draw_titlebar_preview_rect);
277         m_owner_draw_titlebar_preview_rect.bottom = m_owner_draw_titlebar_preview_rect.top - theApp.DPI(4);
278         m_owner_draw_titlebar_preview_rect.top = m_owner_draw_titlebar_preview_rect.bottom - theApp.DPI(50);
279         m_owner_draw_titlebar_preview_rect.right = m_owner_draw_titlebar_preview_rect.left + m_system_titlebar_preview_rect.Width();
280     }
281 
282 }
283 
GetDataFromUi()284 void CAppearanceSettingDlg::GetDataFromUi()
285 {
286     m_data.ui_refresh_interval = m_ui_refresh_interval_edit.GetValue();
287 
288     m_data.always_show_statusbar = (IsDlgButtonChecked(IDC_ALWAYS_SHOW_STATUSBAR_CHECK) != 0);
289     m_data.show_window_frame = (IsDlgButtonChecked(IDC_USE_SYSTEM_TITLEBAR_RADIO) != 0);
290 
291     m_data.show_settings_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_SETTINGS_BTN_CHECK) != 0);
292     m_data.show_skin_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_SKIN_BTN_CHECK) != 0);
293     m_data.show_minimode_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_MINI_MODE_BTN_CHECK) != 0);
294     m_data.show_fullscreen_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_FULLSCREEN_BTN_CHECK) != 0);
295     m_data.show_minimize_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_MINIMIZE_BTN_CHECK) != 0);
296     m_data.show_maximize_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_MAXIMIZE_BTN_CHECK) != 0);
297     m_data.show_dark_light_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_DARK_LIGHT_BTN_CHECK) != 0);
298 }
299 
ApplyDataToUi()300 void CAppearanceSettingDlg::ApplyDataToUi()
301 {
302     m_color_static.SetFillColor(theApp.m_app_setting_data.theme_color.original_color);
303 }
304 
DrawColor()305 void CAppearanceSettingDlg::DrawColor()
306 {
307     m_color_static.SetFillColor(m_data.theme_color.original_color);
308     m_color_static1.SetFillColor(m_color1);
309     m_color_static2.SetFillColor(m_color2);
310     m_color_static3.SetFillColor(m_color3);
311     m_color_static4.SetFillColor(m_color4);
312     m_color_static5.SetFillColor(m_color5);
313     m_color_static6.SetFillColor(m_color6);
314     m_color_static7.SetFillColor(m_color7);
315 }
316 
317 
BEGIN_MESSAGE_MAP(CAppearanceSettingDlg,CTabDlg)318 BEGIN_MESSAGE_MAP(CAppearanceSettingDlg, CTabDlg)
319     //	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_TRANSPARENT_SLIDER, &CAppearanceSettingDlg::OnNMReleasedcaptureTransparentSlider)
320     ON_WM_HSCROLL()
321     ON_BN_CLICKED(IDC_SET_PROGRESS_COLOR_BUTTON, &CAppearanceSettingDlg::OnBnClickedSetThemeButton)
322     ON_STN_CLICKED(IDC_COLOR_STATIC2, &CAppearanceSettingDlg::OnStnClickedColorStatic2)
323     ON_STN_CLICKED(IDC_COLOR_STATIC3, &CAppearanceSettingDlg::OnStnClickedColorStatic3)
324     ON_STN_CLICKED(IDC_COLOR_STATIC4, &CAppearanceSettingDlg::OnStnClickedColorStatic4)
325     ON_STN_CLICKED(IDC_COLOR_STATIC5, &CAppearanceSettingDlg::OnStnClickedColorStatic5)
326     ON_STN_CLICKED(IDC_COLOR_STATIC6, &CAppearanceSettingDlg::OnStnClickedColorStatic6)
327     ON_STN_CLICKED(IDC_COLOR_STATIC7, &CAppearanceSettingDlg::OnStnClickedColorStatic7)
328     ON_STN_CLICKED(IDC_COLOR_STATIC8, &CAppearanceSettingDlg::OnStnClickedColorStatic8)
329     ON_BN_CLICKED(IDC_FOLLOW_SYSTEM_COLOR_CHECK, &CAppearanceSettingDlg::OnBnClickedFollowSystemColorCheck)
330     ON_BN_CLICKED(IDC_SHOW_ALBUM_COVER_CHECK, &CAppearanceSettingDlg::OnBnClickedShowAlbumCoverCheck)
331     ON_CBN_SELCHANGE(IDC_ALBUM_FIT_COMBO, &CAppearanceSettingDlg::OnCbnSelchangeAlbumFitCombo)
332     ON_BN_CLICKED(IDC_ALBUM_COVER_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedAlbumCoverBackgroundCheck)
333     ON_BN_CLICKED(IDC_SHOW_SPECTRUM_CHECK, &CAppearanceSettingDlg::OnBnClickedShowSpectrumCheck)
334     ON_BN_CLICKED(IDC_USE_OUT_IMAGE_CHECK, &CAppearanceSettingDlg::OnBnClickedUseOutImageCheck)
335     ON_BN_CLICKED(IDC_BACKGROUND_GAUSS_BLUR_CHECK, &CAppearanceSettingDlg::OnBnClickedBackgroundGaussBlurCheck)
336     ON_BN_CLICKED(IDC_LYRIC_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedLyricBackgroundCheck)
337     ON_BN_CLICKED(IDC_DARK_MODE_CHECK, &CAppearanceSettingDlg::OnBnClickedDarkModeCheck)
338     ON_BN_CLICKED(IDC_USE_INNER_IMAGE_FIRST_CHECK, &CAppearanceSettingDlg::OnBnClickedUseInnerImageFirstCheck)
339     ON_BN_CLICKED(IDC_ENABLE_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedEnableBackgroundCheck)
340     ON_BN_CLICKED(IDC_LOW_FREQ_IN_CENTER_CHECK, &CAppearanceSettingDlg::OnBnClickedLowFreqInCenterCheck)
341     ON_BN_CLICKED(IDC_DEFAULT_ALBUM_COVER_HQ, &CAppearanceSettingDlg::OnBnClickedDefaultAlbumCoverHq)
342     ON_BN_CLICKED(IDC_RESTORE_DEFAULT_BUTTON, &CAppearanceSettingDlg::OnBnClickedRestoreDefaultButton)
343     ON_CBN_SELCHANGE(IDC_COMBO1, &CAppearanceSettingDlg::OnCbnSelchangeCombo1)
344     ON_WM_PAINT()
345     ON_BN_CLICKED(IDC_NOTIFY_ICON_AUTO_ADAPT_CHECK, &CAppearanceSettingDlg::OnBnClickedNotifyIconAutoAdaptCheck)
346     ON_BN_CLICKED(IDC_BTN_ROUND_CORNERS_CHECK, &CAppearanceSettingDlg::OnBnClickedBtnRoundCornersCheck)
347     ON_MESSAGE(WM_EDIT_BROWSE_CHANGED, &CAppearanceSettingDlg::OnEditBrowseChanged)
348     ON_BN_CLICKED(IDC_USE_DESKTOP_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedUseDesktopBackgroundCheck)
349     ON_BN_CLICKED(IDC_SHOW_NEXT_CHECK, &CAppearanceSettingDlg::OnBnClickedShowNextCheck)
350     ON_BN_CLICKED(IDC_SHOW_FPS_CHECK, &CAppearanceSettingDlg::OnBnClickedShowFpsCheck)
351     ON_BN_CLICKED(IDC_ALWAYS_SHOW_STATUSBAR_CHECK, &CAppearanceSettingDlg::OnBnClickedAlwaysShowStatusbarCheck)
352     ON_BN_CLICKED(IDC_USE_SYSTEM_TITLEBAR_RADIO, &CAppearanceSettingDlg::OnBnClickedUseSystemTitlebarRadio)
353     ON_BN_CLICKED(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO, &CAppearanceSettingDlg::OnBnClickedUseOwnerDrawTitlebarRadio)
354 END_MESSAGE_MAP()
355 
356 
357 // CAppearanceSettingDlg 消息处理程序
358 
359 
360 BOOL CAppearanceSettingDlg::OnInitDialog()
361 {
362     CTabDlg::OnInitDialog();
363 
364     // TODO:  在此添加额外的初始化
365 
366     m_transparency_slid.SetRange(20, 100);
367     m_transparency_slid.SetPos(m_data.window_transparency);
368     CString str;
369     str.Format(_T("%d%%"), m_data.window_transparency);
370     SetDlgItemText(IDC_TRANSPARENT_STATIC, str);
371 
372     m_spectrum_height_slid.SetRange(0, 100);
373     m_spectrum_height_slid.SetPos(SpectrumHeightChg(theApp.m_app_setting_data.sprctrum_height));
374     str.Format(_T("%d%%"), theApp.m_app_setting_data.sprctrum_height);
375     SetDlgItemText(IDC_SPECTRUM_HEIGHT_STATIC, str);
376 
377     //为控件设置SS_NOTIFY属性,以允许响应消息
378     DWORD dwStyle = m_color_static.GetStyle();
379     ::SetWindowLong(m_color_static.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
380     ::SetWindowLong(m_color_static1.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
381     ::SetWindowLong(m_color_static2.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
382     ::SetWindowLong(m_color_static3.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
383     ::SetWindowLong(m_color_static4.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
384     ::SetWindowLong(m_color_static5.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
385     ::SetWindowLong(m_color_static6.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
386     ::SetWindowLong(m_color_static7.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
387 
388     m_toolTip.Create(this);
389     m_toolTip.SetMaxTipWidth(theApp.DPI(300));
390     m_toolTip.AddTool(&m_color_static, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_CURRENT").c_str());
391     m_toolTip.AddTool(&m_color_static1, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_LIGNT_BLUE").c_str());
392     m_toolTip.AddTool(&m_color_static2, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_GREEN").c_str());
393     m_toolTip.AddTool(&m_color_static3, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_ORANGE").c_str());
394     m_toolTip.AddTool(&m_color_static4, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_CYAN_GREEN").c_str());
395     m_toolTip.AddTool(&m_color_static5, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_PINK").c_str());
396     m_toolTip.AddTool(&m_color_static6, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_LIGHT_PURPLE").c_str());
397     m_toolTip.AddTool(&m_color_static7, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_GRAY").c_str());
398 
399     m_toolTip.SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
400 
401     DrawColor();
402 
403     ////设置“更多颜色”按钮的可用状态
404     //GetDlgItem(IDC_SET_PROGRESS_COLOR_BUTTON)->EnableWindow(!m_data.theme_color_follow_system);
405     //根据是否跟随系统设置复选按钮的初始状态
406 #ifdef COMPILE_IN_WIN_XP
407     m_follow_system_color_check.EnableWindow(FALSE);
408 #else
409     //if (CWinVersionHelper::IsWindows8OrLater())
410     m_follow_system_color_check.SetCheck(m_data.theme_color_follow_system);
411     //else
412     //	m_follow_system_color_check.EnableWindow(FALSE);		//Win8以下系统禁用此复选按钮
413 #endif // !COMPILE_IN_WIN_XP
414 
415     //
416     m_show_album_cover_chk.SetCheck(m_data.show_album_cover);
417     m_album_cover_fit_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT_STRETCH").c_str());
418     m_album_cover_fit_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT_FILL").c_str());
419     m_album_cover_fit_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT_ADAPT").c_str());
420     m_album_cover_fit_combo.SetCurSel(static_cast<int>(m_data.album_cover_fit));
421     m_toolTip.AddTool(&m_album_cover_fit_combo, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_FIT").c_str());
422     m_toolTip.AddTool(&m_use_out_image_chk, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_OUT_IMAGE_ALLOW").c_str());
423     m_toolTip.AddTool(&m_album_cover_name_edit, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_OUT_IMAGE_FILE_NAME").c_str());
424     m_toolTip.AddTool(&m_album_cover_path_edit, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_OUT_FOLDER").c_str());
425 
426     m_album_cover_name_edit.SetWindowTextW(CCommon::StringMerge(m_data.default_album_name, L',').c_str());
427     m_album_cover_name_edit.SetEditBrowseMode(CBrowseEdit::EditBrowseMode::LIST);
428     m_album_cover_name_edit.SetPopupDlgTitle(theApp.m_str_table.LoadText(L"TITLE_BROWSE_EDIT_SET_MULTI_OUT_ALBUM_COVER_FILE_NAME"));
429     m_album_cover_path_edit.SetWindowTextW(m_data.album_cover_path.c_str());
430 
431     m_enable_background_chk.SetCheck(m_data.enable_background);
432     m_album_cover_as_background_chk.SetCheck(m_data.album_cover_as_background);
433     m_show_spectrum_chk.SetCheck(m_data.show_spectrum);
434 
435     m_back_transparency_slid.SetRange(10, 98);
436     m_back_transparency_slid.SetPos(theApp.m_app_setting_data.background_transparency);
437     str.Format(_T("%d%%"), theApp.m_app_setting_data.background_transparency);
438     SetDlgItemText(IDC_BACKGROUND_TRANSPARENCY_STATIC, str);
439 
440     m_use_out_image_chk.SetCheck(m_data.use_out_image);
441 
442     m_background_gauss_blur_chk.SetCheck(m_data.background_gauss_blur);
443     m_gauss_blur_radius_sld.SetRange(10, 300);
444     m_gauss_blur_radius_sld.SetPos(m_data.gauss_blur_radius);
445     str.Format(_T("%.1f"), static_cast<float>(m_data.gauss_blur_radius) / 10);
446     SetDlgItemText(IDC_GAUSS_BLUR_RADIUS_STATIC, str);
447     m_lyric_background_chk.SetCheck(m_data.lyric_background);
448     m_dark_mode_chk.SetCheck(m_data.dark_mode);
449     m_use_inner_image_first_chk.SetCheck(m_data.use_inner_image_first);
450     m_low_freq_in_center_chk.SetCheck(m_data.spectrum_low_freq_in_center);
451 
452     m_default_background_edit.SetWindowText(m_data.default_background.c_str());
453     wstring img_fliter = FilterHelper::GetImageFileFilter();
454     m_default_background_edit.EnableFileBrowseButton(NULL, img_fliter.c_str());
455     CheckDlgButton(IDC_USE_DESKTOP_BACKGROUND_CHECK, m_data.use_desktop_background);
456 
457     m_default_cover_hq_chk.SetCheck(m_data.draw_album_high_quality);
458 
459     m_ui_refresh_interval_edit.SetRange(MIN_UI_INTERVAL, MAX_UI_INTERVAL, UI_INTERVAL_STEP);
460     m_ui_refresh_interval_edit.SetValue(m_data.ui_refresh_interval);
461 
462     m_icon_select_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_DEFAULT").c_str());
463     m_icon_select_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_LIGHT").c_str());
464     m_icon_select_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_DARK").c_str());
465     m_icon_select_combo.SetCurSel(m_data.notify_icon_selected);
466 
467     m_notify_icon_auto_adapt_chk.SetCheck(m_data.notify_icon_auto_adapt);
468     m_btn_round_corners_chk.SetCheck(m_data.button_round_corners);
469 
470     CheckDlgButton(IDC_ALWAYS_SHOW_STATUSBAR_CHECK, m_data.always_show_statusbar);
471     CheckDlgButton(IDC_SHOW_NEXT_CHECK, m_data.show_next_track);
472     CheckDlgButton(IDC_SHOW_FPS_CHECK, m_data.show_fps);
473 
474     if (m_data.show_window_frame)
475         CheckDlgButton(IDC_USE_SYSTEM_TITLEBAR_RADIO, TRUE);
476     else
477         CheckDlgButton(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO, TRUE);
478     CheckDlgButton(IDC_SHOW_SETTINGS_BTN_CHECK, m_data.show_settings_btn_in_titlebar);
479     CheckDlgButton(IDC_SHOW_SKIN_BTN_CHECK, m_data.show_skin_btn_in_titlebar);
480     CheckDlgButton(IDC_SHOW_MINI_MODE_BTN_CHECK, m_data.show_minimode_btn_in_titlebar);
481     CheckDlgButton(IDC_SHOW_FULLSCREEN_BTN_CHECK, m_data.show_fullscreen_btn_in_titlebar);
482     CheckDlgButton(IDC_SHOW_MINIMIZE_BTN_CHECK, m_data.show_minimize_btn_in_titlebar);
483     CheckDlgButton(IDC_SHOW_MAXIMIZE_BTN_CHECK, m_data.show_maximize_btn_in_titlebar);
484     CheckDlgButton(IDC_SHOW_DARK_LIGHT_BTN_CHECK, m_data.show_dark_light_btn_in_titlebar);
485 
486     //设置通知区图标预览区域的位置
487     CalculatePreviewBitmapRect();
488 
489     //载入预览图
490     m_preview_dark.LoadFromResource(AfxGetResourceHandle(), IDB_NOTIFY_ICON_PREVIEW);
491     m_preview_light.LoadFromResource(AfxGetResourceHandle(), IDB_NOTIFY_ICON_PREVIEW_LIGHT);
492     m_preview_system_titlebar.LoadFromResource(AfxGetResourceHandle(), IDB_SYSTEM_TITLEBAR_PREVIEW);
493     m_preview_owner_draw_titlebar.LoadFromResource(AfxGetResourceHandle(), IDB_OWNER_DRAW_TITLEBAR_PREVIEW);
494 
495     SetControlEnable();
496 
497     //设置控件不响应鼠标滚轮消息
498     m_spectrum_height_slid.SetMouseWheelEnable(false);
499     m_transparency_slid.SetMouseWheelEnable(false);
500     m_album_cover_fit_combo.SetMouseWheelEnable(false);
501     m_back_transparency_slid.SetMouseWheelEnable(false);
502     m_gauss_blur_radius_sld.SetMouseWheelEnable(false);
503     m_ui_refresh_interval_edit.SetMouseWheelEnable(false);
504     m_icon_select_combo.SetMouseWheelEnable(false);
505 
506     return TRUE;  // return TRUE unless you set the focus to a control
507                   // 异常: OCX 属性页应返回 FALSE
508 }
509 
510 
511 //void CAppearanceSettingDlg::OnNMReleasedcaptureTransparentSlider(NMHDR *pNMHDR, LRESULT *pResult)
512 //{
513 //	// TODO: 在此添加控件通知处理程序代码
514 //	m_data.window_transparency = m_transparency_slid.GetPos();
515 //	CString str;
516 //	str.Format(_T("不透明度:%%%d"), m_data.window_transparency);
517 //	SetDlgItemText(IDC_TRANSPARENT_STATIC, str);
518 //	*pResult = 0;
519 //}
520 
521 
OnHScroll(UINT nSBCode,UINT nPos,CScrollBar * pScrollBar)522 void CAppearanceSettingDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
523 {
524     // TODO: 在此添加消息处理程序代码和/
525     //滑动水平滑动条时响应此函数
526     if ((pScrollBar->GetDlgCtrlID() == IDC_TRANSPARENT_SLIDER))
527     {
528         m_data.window_transparency = m_transparency_slid.GetPos();
529         CString str;
530         str.Format(_T("%d%%"), m_data.window_transparency);
531         SetDlgItemText(IDC_TRANSPARENT_STATIC, str);
532 
533         SetTransparency();		//实时设置窗口不透明度
534     }
535     if ((pScrollBar->GetDlgCtrlID() == IDC_SPECTRUM_HEIGHT_SLIDER))
536     {
537         theApp.m_app_setting_data.sprctrum_height = SpectrumHeightRChg(m_spectrum_height_slid.GetPos());
538         m_data.sprctrum_height = theApp.m_app_setting_data.sprctrum_height;
539         CString str;
540         str.Format(_T("%d%%"), theApp.m_app_setting_data.sprctrum_height);
541         SetDlgItemText(IDC_SPECTRUM_HEIGHT_STATIC, str);
542     }
543     if ((pScrollBar->GetDlgCtrlID() == IDC_BACKGROUND_TRANSPARENCY_SLIDER))
544     {
545         theApp.m_app_setting_data.background_transparency = m_back_transparency_slid.GetPos();
546         m_data.background_transparency = theApp.m_app_setting_data.background_transparency;
547         CString str;
548         str.Format(_T("%d%%"), theApp.m_app_setting_data.background_transparency);
549         SetDlgItemText(IDC_BACKGROUND_TRANSPARENCY_STATIC, str);
550     }
551     if ((pScrollBar->GetDlgCtrlID() == IDC_GAUSS_BLURE_RADIUS_SLIDER))
552     {
553         m_data.gauss_blur_radius = m_gauss_blur_radius_sld.GetPos();
554         CString str;
555         str.Format(_T("%.1f"), static_cast<float>(m_data.gauss_blur_radius) / 10);
556         SetDlgItemText(IDC_GAUSS_BLUR_RADIUS_STATIC, str);
557     }
558 
559     CTabDlg::OnHScroll(nSBCode, nPos, pScrollBar);
560 }
561 
562 
OnBnClickedSetThemeButton()563 void CAppearanceSettingDlg::OnBnClickedSetThemeButton()
564 {
565     // TODO: 在此添加控件通知处理程序代码
566     CColorDialog colorDlg(m_data.theme_color.original_color, 0, this);
567     if (colorDlg.DoModal() == IDOK)
568     {
569         m_data.theme_color.original_color = colorDlg.GetColor();
570         //if (m_data.theme_color.original_color == 0)
571         //	MessageBox(_T("警告:将主题颜色设置成黑色会使播放列表中正在播放的项目看不见!"), NULL, MB_ICONWARNING);
572         //if(m_data.theme_color.original_color == RGB(255,255,255))
573         //	MessageBox(WHITE_THEME_COLOR_WARNING), NULL, MB_ICONWARNING);
574         m_color_static.SetFillColor(m_data.theme_color.original_color);
575         //设置了“更多颜色”之后,取消“跟随系统主题色”复选按钮的选中
576         m_data.theme_color_follow_system = false;
577         m_follow_system_color_check.SetCheck(FALSE);
578     }
579 }
580 
581 
OnStnClickedColorStatic2()582 void CAppearanceSettingDlg::OnStnClickedColorStatic2()
583 {
584     // TODO: 在此添加控件通知处理程序代码
585     m_data.theme_color.original_color = m_color1;
586     ClickColor();
587 }
588 
589 
OnStnClickedColorStatic3()590 void CAppearanceSettingDlg::OnStnClickedColorStatic3()
591 {
592     // TODO: 在此添加控件通知处理程序代码
593     m_data.theme_color.original_color = m_color2;
594     ClickColor();
595 }
596 
597 
OnStnClickedColorStatic4()598 void CAppearanceSettingDlg::OnStnClickedColorStatic4()
599 {
600     // TODO: 在此添加控件通知处理程序代码
601     m_data.theme_color.original_color = m_color3;
602     ClickColor();
603 }
604 
605 
OnStnClickedColorStatic5()606 void CAppearanceSettingDlg::OnStnClickedColorStatic5()
607 {
608     // TODO: 在此添加控件通知处理程序代码
609     m_data.theme_color.original_color = m_color4;
610     ClickColor();
611 }
612 
613 
OnStnClickedColorStatic6()614 void CAppearanceSettingDlg::OnStnClickedColorStatic6()
615 {
616     // TODO: 在此添加控件通知处理程序代码
617     m_data.theme_color.original_color = m_color5;
618     ClickColor();
619 }
620 
621 
OnStnClickedColorStatic7()622 void CAppearanceSettingDlg::OnStnClickedColorStatic7()
623 {
624     // TODO: 在此添加控件通知处理程序代码
625     m_data.theme_color.original_color = m_color6;
626     ClickColor();
627 }
628 
OnStnClickedColorStatic8()629 void CAppearanceSettingDlg::OnStnClickedColorStatic8()
630 {
631     m_data.theme_color.original_color = m_color7;
632     ClickColor();
633 }
634 
635 
PreTranslateMessage(MSG * pMsg)636 BOOL CAppearanceSettingDlg::PreTranslateMessage(MSG* pMsg)
637 {
638     // TODO: 在此添加专用代码和/或调用基类
639     if (pMsg->message == WM_MOUSEMOVE)
640         m_toolTip.RelayEvent(pMsg);
641 
642     return CTabDlg::PreTranslateMessage(pMsg);
643 }
644 
645 
OnBnClickedFollowSystemColorCheck()646 void CAppearanceSettingDlg::OnBnClickedFollowSystemColorCheck()
647 {
648     // TODO: 在此添加控件通知处理程序代码
649     m_data.theme_color_follow_system = (m_follow_system_color_check.GetCheck() != 0);
650     //GetDlgItem(IDC_SET_PROGRESS_COLOR_BUTTON)->EnableWindow(!m_data.theme_color_follow_system);
651 }
652 
653 
OnBnClickedShowAlbumCoverCheck()654 void CAppearanceSettingDlg::OnBnClickedShowAlbumCoverCheck()
655 {
656     // TODO: 在此添加控件通知处理程序代码
657     m_data.show_album_cover = (m_show_album_cover_chk.GetCheck() != 0);
658     SetControlEnable();
659 }
660 
661 
OnCbnSelchangeAlbumFitCombo()662 void CAppearanceSettingDlg::OnCbnSelchangeAlbumFitCombo()
663 {
664     // TODO: 在此添加控件通知处理程序代码
665     m_data.album_cover_fit = static_cast<CDrawCommon::StretchMode>(m_album_cover_fit_combo.GetCurSel());
666 }
667 
668 
OnBnClickedAlbumCoverBackgroundCheck()669 void CAppearanceSettingDlg::OnBnClickedAlbumCoverBackgroundCheck()
670 {
671     // TODO: 在此添加控件通知处理程序代码
672     m_data.album_cover_as_background = (m_album_cover_as_background_chk.GetCheck() != 0);
673     SetControlEnable();
674 }
675 
676 
OnBnClickedShowSpectrumCheck()677 void CAppearanceSettingDlg::OnBnClickedShowSpectrumCheck()
678 {
679     // TODO: 在此添加控件通知处理程序代码
680     m_data.show_spectrum = (m_show_spectrum_chk.GetCheck() != 0);
681     SetControlEnable();
682 }
683 
684 
OnBnClickedUseOutImageCheck()685 void CAppearanceSettingDlg::OnBnClickedUseOutImageCheck()
686 {
687     // TODO: 在此添加控件通知处理程序代码
688     m_data.use_out_image = (m_use_out_image_chk.GetCheck() != 0);
689     SetControlEnable();
690 }
691 
692 
OnBnClickedBackgroundGaussBlurCheck()693 void CAppearanceSettingDlg::OnBnClickedBackgroundGaussBlurCheck()
694 {
695     // TODO: 在此添加控件通知处理程序代码
696     m_data.background_gauss_blur = (m_background_gauss_blur_chk.GetCheck() != 0);
697     SetControlEnable();
698 }
699 
700 
OnBnClickedLyricBackgroundCheck()701 void CAppearanceSettingDlg::OnBnClickedLyricBackgroundCheck()
702 {
703     // TODO: 在此添加控件通知处理程序代码
704     m_data.lyric_background = (m_lyric_background_chk.GetCheck() != 0);
705 }
706 
707 
OnBnClickedDarkModeCheck()708 void CAppearanceSettingDlg::OnBnClickedDarkModeCheck()
709 {
710     // TODO: 在此添加控件通知处理程序代码
711     m_data.dark_mode = (m_dark_mode_chk.GetCheck() != 0);
712 }
713 
714 
OnBnClickedUseInnerImageFirstCheck()715 void CAppearanceSettingDlg::OnBnClickedUseInnerImageFirstCheck()
716 {
717     // TODO: 在此添加控件通知处理程序代码
718     m_data.use_inner_image_first = (m_use_inner_image_first_chk.GetCheck() != 0);
719 }
720 
721 
OnBnClickedEnableBackgroundCheck()722 void CAppearanceSettingDlg::OnBnClickedEnableBackgroundCheck()
723 {
724     // TODO: 在此添加控件通知处理程序代码
725     m_data.enable_background = (m_enable_background_chk.GetCheck() != 0);
726     SetControlEnable();
727 }
728 
729 
OnBnClickedLowFreqInCenterCheck()730 void CAppearanceSettingDlg::OnBnClickedLowFreqInCenterCheck()
731 {
732     // TODO: 在此添加控件通知处理程序代码
733     m_data.spectrum_low_freq_in_center = (m_low_freq_in_center_chk.GetCheck() != 0);
734 }
735 
736 
OnBnClickedDefaultAlbumCoverHq()737 void CAppearanceSettingDlg::OnBnClickedDefaultAlbumCoverHq()
738 {
739     // TODO: 在此添加控件通知处理程序代码
740     m_data.draw_album_high_quality = (m_default_cover_hq_chk.GetCheck() != 0);
741 }
742 
743 
OnBnClickedRestoreDefaultButton()744 void CAppearanceSettingDlg::OnBnClickedRestoreDefaultButton()
745 {
746     // TODO: 在此添加控件通知处理程序代码
747     m_ui_refresh_interval_edit.SetValue(UI_INTERVAL_DEFAULT);
748 }
749 
750 
OnCbnSelchangeCombo1()751 void CAppearanceSettingDlg::OnCbnSelchangeCombo1()
752 {
753     // TODO: 在此添加控件通知处理程序代码
754     m_data.notify_icon_selected = m_icon_select_combo.GetCurSel();
755     InvalidateRect(m_notify_icon_preview, FALSE);
756 }
757 
758 
OnPaint()759 void CAppearanceSettingDlg::OnPaint()
760 {
761     CPaintDC dc(this); // device context for painting
762                        // TODO: 在此处添加消息处理程序代码
763                        // 不为绘图消息调用 CTabDlg::OnPaint()
764 
765     CalculatePreviewBitmapRect();
766     CDrawCommon drawer;
767     drawer.Create(&dc);
768 
769     //绘制通知区图标预览图
770     CImage& image{ m_data.notify_icon_selected == 2 ? m_preview_light : m_preview_dark };
771     //绘制背景
772     drawer.DrawImage(image, m_notify_icon_preview.TopLeft(), m_notify_icon_preview.Size(), CDrawCommon::StretchMode::STRETCH);
773     //绘制图标
774     if (m_data.notify_icon_selected >= 0 && m_data.notify_icon_selected < MAX_NOTIFY_ICON)
775     {
776         drawer.DrawIcon(theApp.GetNotifyIncon(m_data.notify_icon_selected),
777             CPoint(m_notify_icon_preview.left + ICON_X, m_notify_icon_preview.top + ICON_Y),
778             CSize(theApp.DPI(16), theApp.DPI(16)));
779     }
780 
781     //绘制标题栏预览图
782     drawer.DrawImage(m_preview_system_titlebar, m_system_titlebar_preview_rect.TopLeft(), m_system_titlebar_preview_rect.Size(), CDrawCommon::StretchMode::FIT);
783     drawer.DrawImage(m_preview_owner_draw_titlebar, m_owner_draw_titlebar_preview_rect.TopLeft(), m_owner_draw_titlebar_preview_rect.Size(), CDrawCommon::StretchMode::FIT);
784 }
785 
786 
OnBnClickedNotifyIconAutoAdaptCheck()787 void CAppearanceSettingDlg::OnBnClickedNotifyIconAutoAdaptCheck()
788 {
789     // TODO: 在此添加控件通知处理程序代码
790     m_data.notify_icon_auto_adapt = (m_notify_icon_auto_adapt_chk.GetCheck() != 0);
791 }
792 
793 
OnBnClickedBtnRoundCornersCheck()794 void CAppearanceSettingDlg::OnBnClickedBtnRoundCornersCheck()
795 {
796     // TODO: 在此添加控件通知处理程序代码
797     m_data.button_round_corners = (m_btn_round_corners_chk.GetCheck() != 0);
798 }
799 
800 
OnEditBrowseChanged(WPARAM wParam,LPARAM lParam)801 afx_msg LRESULT CAppearanceSettingDlg::OnEditBrowseChanged(WPARAM wParam, LPARAM lParam)
802 {
803     CBrowseEdit* pEdit = (CBrowseEdit*)lParam;
804     if (pEdit == &m_default_background_edit)
805     {
806         CString str;
807         m_default_background_edit.GetWindowText(str);
808         m_data.default_background = str.GetString();
809     }
810     else if (pEdit == &m_album_cover_name_edit)
811     {
812         CString temp;
813         m_album_cover_name_edit.GetWindowTextW(temp);
814         temp.Replace(L'/', L'\\');
815         CCommon::StringSplit(wstring(temp), L',', m_data.default_album_name);
816         for (auto& album_name : m_data.default_album_name)
817         {
818             // 虽然开头的.\\不是后续识别必须的但是如果发现缺少还是加上
819             // 这是一个非简写的相对路径,绝对路径此处不做处理
820             if (album_name.find(L'\\') != wstring::npos && album_name.front() != L'\\' && !CCommon::IsPath(album_name))
821             {
822                 // 确保相对路径以".\\"开头
823                 if (album_name.at(0) == L'.' && album_name.at(1) == L'\\')
824                     continue;
825                 album_name = L".\\" + album_name;
826             }
827         }
828         m_album_cover_name_edit.SetWindowTextW(CCommon::StringMerge(m_data.default_album_name, L',').c_str());
829     }
830     else if (pEdit == &m_album_cover_path_edit)
831     {
832         CString str;
833         m_album_cover_path_edit.GetWindowTextW(str);
834         m_data.album_cover_path = str.GetString();
835     }
836     return 0;
837 }
838 
839 
OnBnClickedUseDesktopBackgroundCheck()840 void CAppearanceSettingDlg::OnBnClickedUseDesktopBackgroundCheck()
841 {
842     // TODO: 在此添加控件通知处理程序代码
843     m_data.use_desktop_background = (IsDlgButtonChecked(IDC_USE_DESKTOP_BACKGROUND_CHECK) != 0);
844     SetControlEnable();
845 }
846 
847 
OnBnClickedShowNextCheck()848 void CAppearanceSettingDlg::OnBnClickedShowNextCheck()
849 {
850     // TODO: 在此添加控件通知处理程序代码
851     m_data.show_next_track = (IsDlgButtonChecked(IDC_SHOW_NEXT_CHECK) != 0);
852 }
853 
854 
OnBnClickedShowFpsCheck()855 void CAppearanceSettingDlg::OnBnClickedShowFpsCheck()
856 {
857     // TODO: 在此添加控件通知处理程序代码
858     m_data.show_fps = (IsDlgButtonChecked(IDC_SHOW_FPS_CHECK) != 0);
859 }
860 
861 
OnBnClickedAlwaysShowStatusbarCheck()862 void CAppearanceSettingDlg::OnBnClickedAlwaysShowStatusbarCheck()
863 {
864     m_data.always_show_statusbar = (IsDlgButtonChecked(IDC_ALWAYS_SHOW_STATUSBAR_CHECK) != 0);
865     SetControlEnable();
866 }
867 
868 
OnBnClickedUseSystemTitlebarRadio()869 void CAppearanceSettingDlg::OnBnClickedUseSystemTitlebarRadio()
870 {
871     m_data.show_window_frame = true;
872     SetControlEnable();
873 }
874 
875 
OnBnClickedUseOwnerDrawTitlebarRadio()876 void CAppearanceSettingDlg::OnBnClickedUseOwnerDrawTitlebarRadio()
877 {
878     m_data.show_window_frame = false;
879     SetControlEnable();
880 }
881