diff --git a/TrafficMonitor/CommonData.cpp b/TrafficMonitor/CommonData.cpp index d100e32d..07c15284 100644 --- a/TrafficMonitor/CommonData.cpp +++ b/TrafficMonitor/CommonData.cpp @@ -67,13 +67,15 @@ const std::map& DispStrings::GetAllItems() const void DispStrings::operator=(const DispStrings& disp_str) { - map_str = disp_str.map_str; + std::map tmp = disp_str.map_str; //如果赋值的字符串是定义的无效字符串,则不赋值 - for (auto iter = map_str.begin(); iter != map_str.end(); ++iter) + for (auto iter = tmp.begin(); iter != tmp.end(); ++iter) { if (iter->second == NONE_STR) - iter->second.clear(); + iter->second = map_str[iter->first]; } + + map_str = tmp; } bool DispStrings::IsInvalid() const diff --git a/TrafficMonitor/CommonData.h b/TrafficMonitor/CommonData.h index 7a41cf22..88e27b99 100644 --- a/TrafficMonitor/CommonData.h +++ b/TrafficMonitor/CommonData.h @@ -192,6 +192,11 @@ struct MainConfigData string m_connection_name; //当前选择网络的名称 wstring m_skin_name; //选择的皮肤的名称 + + bool skin_auto_adapt{ false }; //根据深色/浅色模式自动切换皮肤 + wstring skin_name_light_mode; //浅色模式下的皮肤名称 + wstring skin_name_dark_mode; //深色模式下的皮肤名称 + int m_dft_notify_icon = 0; //默认的通知图标(用于区分win10的深色和浅色模式) int m_notify_icon_selected{}; //要显示的通知区图标 bool m_notify_icon_auto_adapt{ false }; //通知区图标是否自动适应Win10深浅色模式 diff --git a/TrafficMonitor/SkinAutoAdaptSettingDlg.cpp b/TrafficMonitor/SkinAutoAdaptSettingDlg.cpp new file mode 100644 index 00000000..807c442c --- /dev/null +++ b/TrafficMonitor/SkinAutoAdaptSettingDlg.cpp @@ -0,0 +1,78 @@ +// SkinAutoAdaptSettingDlg.cpp: 实现文件 +// + +#include "stdafx.h" +#include "TrafficMonitor.h" +#include "afxdialogex.h" +#include "SkinAutoAdaptSettingDlg.h" + + +// CSkinAutoAdaptSettingDlg 对话框 + +IMPLEMENT_DYNAMIC(CSkinAutoAdaptSettingDlg, CDialog) + +CSkinAutoAdaptSettingDlg::CSkinAutoAdaptSettingDlg(const vector& skins, CWnd* pParent /*=nullptr*/) + : CDialog(IDD_SKIN_AUTO_ADAPT_DLG, pParent) + , m_skins(skins) +{ + +} + +CSkinAutoAdaptSettingDlg::~CSkinAutoAdaptSettingDlg() +{ +} + +int CSkinAutoAdaptSettingDlg::FindSkinIndex(const wstring& skin_name) +{ + auto iter = std::find(m_skins.begin(), m_skins.end(), skin_name); + if (iter == m_skins.end()) + return 0; + return iter - m_skins.begin(); +} + +void CSkinAutoAdaptSettingDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + DDX_Control(pDX, IDC_DARK_MODE_SKIN_COMBO, m_dark_mode_skin_combo); + DDX_Control(pDX, IDC_LIGHT_MODE_SKIN_COMBO, m_light_mode_skin_combo); +} + + +BEGIN_MESSAGE_MAP(CSkinAutoAdaptSettingDlg, CDialog) +END_MESSAGE_MAP() + + +// CSkinAutoAdaptSettingDlg 消息处理程序 + + +BOOL CSkinAutoAdaptSettingDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + //初始化下拉列表 + for (const auto& skin_path : m_skins) + { + wstring skin_name; + size_t index = skin_path.rfind(L'\\'); + skin_name = skin_path.substr(index + 1); + m_dark_mode_skin_combo.AddString(skin_name.c_str()); + m_light_mode_skin_combo.AddString(skin_name.c_str()); + } + + int dark_mode_skin = FindSkinIndex(theApp.m_cfg_data.skin_name_dark_mode); + int light_mode_skin = FindSkinIndex(theApp.m_cfg_data.skin_name_light_mode); + m_dark_mode_skin_combo.SetCurSel(dark_mode_skin); + m_light_mode_skin_combo.SetCurSel(light_mode_skin); + + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE +} + + +void CSkinAutoAdaptSettingDlg::OnOK() +{ + m_dark_mode_skin = m_dark_mode_skin_combo.GetCurSel(); + m_light_mode_skin = m_light_mode_skin_combo.GetCurSel(); + + CDialog::OnOK(); +} diff --git a/TrafficMonitor/SkinAutoAdaptSettingDlg.h b/TrafficMonitor/SkinAutoAdaptSettingDlg.h new file mode 100644 index 00000000..0c7bb441 --- /dev/null +++ b/TrafficMonitor/SkinAutoAdaptSettingDlg.h @@ -0,0 +1,41 @@ +#pragma once +#include "afxdialogex.h" + + +// CSkinAutoAdaptSettingDlg 对话框 + +class CSkinAutoAdaptSettingDlg : public CDialog +{ + DECLARE_DYNAMIC(CSkinAutoAdaptSettingDlg) + +public: + CSkinAutoAdaptSettingDlg(const vector& skins, CWnd* pParent = nullptr); // 标准构造函数 + virtual ~CSkinAutoAdaptSettingDlg(); + + int GetDarkModeSkin() const { return m_dark_mode_skin; } + int GetLightModeSkin() const { return m_light_mode_skin; } + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_SKIN_AUTO_ADAPT_DLG }; +#endif + +private: + int FindSkinIndex(const wstring& skin_name); + +private: + const vector& m_skins; + CComboBox m_dark_mode_skin_combo; + CComboBox m_light_mode_skin_combo; + + int m_dark_mode_skin{}; + int m_light_mode_skin{}; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + virtual BOOL OnInitDialog(); + virtual void OnOK(); +}; diff --git a/TrafficMonitor/SkinDlg.cpp b/TrafficMonitor/SkinDlg.cpp index bc8deede..c88aa5f3 100644 --- a/TrafficMonitor/SkinDlg.cpp +++ b/TrafficMonitor/SkinDlg.cpp @@ -5,6 +5,7 @@ #include "TrafficMonitor.h" #include "SkinDlg.h" #include "afxdialogex.h" +#include "SkinAutoAdaptSettingDlg.h" // CSkinDlg 对话框 @@ -84,6 +85,8 @@ BEGIN_MESSAGE_MAP(CSkinDlg, CBaseDialog) ON_CBN_SELCHANGE(IDC_COMBO1, &CSkinDlg::OnCbnSelchangeCombo1) ON_WM_SIZE() ON_MESSAGE(WM_LINK_CLICKED, &CSkinDlg::OnLinkClicked) + ON_BN_CLICKED(IDC_SKIN_AUTO_ADAPT_BUTTON, &CSkinDlg::OnBnClickedSkinAutoAdaptButton) + ON_BN_CLICKED(IDC_SKIN_AUTO_ADAPT_CHECK, &CSkinDlg::OnBnClickedSkinAutoAdaptCheck) END_MESSAGE_MAP() @@ -122,6 +125,10 @@ BOOL CSkinDlg::OnInitDialog() //显示预览图片 ShowPreview(); + //初始化控件 + CheckDlgButton(IDC_SKIN_AUTO_ADAPT_CHECK, theApp.m_cfg_data.skin_auto_adapt); + EnableDlgCtrl(IDC_SKIN_AUTO_ADAPT_BUTTON, theApp.m_cfg_data.skin_auto_adapt); + //设置超链接 m_skin_course.SetURL(_T("https://github.com/zhongyang219/TrafficMonitor/wiki/%E7%9A%AE%E8%82%A4%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B")); m_skin_download.SetURL(_T("https://github.com/zhongyang219/TrafficMonitorSkin/blob/master/皮肤下载.md")); @@ -161,3 +168,33 @@ afx_msg LRESULT CSkinDlg::OnLinkClicked(WPARAM wParam, LPARAM lParam) } return 0; } + + +void CSkinDlg::OnBnClickedSkinAutoAdaptButton() +{ + CSkinAutoAdaptSettingDlg dlg(m_skins); + if (dlg.DoModal() == IDOK) + { + int dark_mode_skin = dlg.GetDarkModeSkin(); + int light_mode_skin = dlg.GetLightModeSkin(); + if (dark_mode_skin >= 0 && dark_mode_skin < static_cast(m_skins.size())) + theApp.m_cfg_data.skin_name_dark_mode = m_skins[dark_mode_skin]; + if (light_mode_skin >= 0 && light_mode_skin < static_cast(m_skins.size())) + theApp.m_cfg_data.skin_name_light_mode = m_skins[light_mode_skin]; + } +} + + +void CSkinDlg::OnOK() +{ + theApp.m_cfg_data.skin_auto_adapt = (IsDlgButtonChecked(IDC_SKIN_AUTO_ADAPT_CHECK) != FALSE); + + CBaseDialog::OnOK(); +} + + +void CSkinDlg::OnBnClickedSkinAutoAdaptCheck() +{ + bool skin_auto_adapt_checked = (IsDlgButtonChecked(IDC_SKIN_AUTO_ADAPT_CHECK) != FALSE); + EnableDlgCtrl(IDC_SKIN_AUTO_ADAPT_BUTTON, skin_auto_adapt_checked); +} diff --git a/TrafficMonitor/SkinDlg.h b/TrafficMonitor/SkinDlg.h index f367e20d..7b734ebe 100644 --- a/TrafficMonitor/SkinDlg.h +++ b/TrafficMonitor/SkinDlg.h @@ -53,4 +53,8 @@ class CSkinDlg : public CBaseDialog afx_msg void OnSize(UINT nType, int cx, int cy); protected: afx_msg LRESULT OnLinkClicked(WPARAM wParam, LPARAM lParam); +public: + afx_msg void OnBnClickedSkinAutoAdaptButton(); + virtual void OnOK(); + afx_msg void OnBnClickedSkinAutoAdaptCheck(); }; diff --git a/TrafficMonitor/TrafficMonitor.cpp b/TrafficMonitor/TrafficMonitor.cpp index 2725a784..9cb62eb9 100644 --- a/TrafficMonitor/TrafficMonitor.cpp +++ b/TrafficMonitor/TrafficMonitor.cpp @@ -104,6 +104,11 @@ void CTrafficMonitorApp::LoadConfig() m_cfg_data.m_skin_name = ini.GetString(_T("config"), _T("skin_selected"), _T("")); if (m_cfg_data.m_skin_name.substr(0, 8) == L".\\skins\\") //如果读取到的皮肤名称前面有".\\skins\\",则把它删除。(用于和前一个版本保持兼容性) m_cfg_data.m_skin_name = m_cfg_data.m_skin_name.substr(7); + + m_cfg_data.skin_auto_adapt = ini.GetBool(L"skins", L"skin_auto_adapt", false); + m_cfg_data.skin_name_dark_mode = ini.GetString(L"skins", L"skin_name_dark_mode", L""); + m_cfg_data.skin_name_light_mode = ini.GetString(L"skins", L"skin_name_light_mode", L""); + m_cfg_data.m_notify_icon_selected = ini.GetInt(_T("config"), _T("notify_icon_selected"), (m_win_version.IsWindows7() || m_win_version.IsWindows8Or8point1() ? 2 : m_cfg_data.m_dft_notify_icon)); //Win7/8/8.1默认使用蓝色通知区图标,因为隐藏通知区图标后白色图标会看不清,其他系统默认使用白色图标 m_cfg_data.m_notify_icon_auto_adapt = ini.GetBool(_T("config"), _T("notify_icon_auto_adapt"), true); if (m_cfg_data.m_notify_icon_auto_adapt) @@ -335,6 +340,11 @@ void CTrafficMonitorApp::SaveConfig() ini.WriteInt(L"config", L"hide_main_window", m_cfg_data.m_hide_main_window); ini.WriteString(L"connection", L"connection_name", CCommon::StrToUnicode(m_cfg_data.m_connection_name.c_str())); ini.WriteString(_T("config"), _T("skin_selected"), m_cfg_data.m_skin_name.c_str()); + + ini.WriteBool(L"skins", L"skin_auto_adapt", m_cfg_data.skin_auto_adapt); + ini.WriteString(L"skins", L"skin_name_dark_mode", m_cfg_data.skin_name_dark_mode); + ini.WriteString(L"skins", L"skin_name_light_mode", m_cfg_data.skin_name_light_mode); + ini.WriteInt(L"config", L"notify_icon_selected", m_cfg_data.m_notify_icon_selected); ini.WriteBool(L"config", L"notify_icon_auto_adapt", m_cfg_data.m_notify_icon_auto_adapt); diff --git a/TrafficMonitor/TrafficMonitor.rc b/TrafficMonitor/TrafficMonitor.rc index 66da52cb..e421056d 100644 Binary files a/TrafficMonitor/TrafficMonitor.rc and b/TrafficMonitor/TrafficMonitor.rc differ diff --git a/TrafficMonitor/TrafficMonitor.vcxproj b/TrafficMonitor/TrafficMonitor.vcxproj index a93b0926..a49ccf6a 100644 --- a/TrafficMonitor/TrafficMonitor.vcxproj +++ b/TrafficMonitor/TrafficMonitor.vcxproj @@ -574,6 +574,7 @@ + @@ -654,6 +655,7 @@ + diff --git a/TrafficMonitor/TrafficMonitor.vcxproj.filters b/TrafficMonitor/TrafficMonitor.vcxproj.filters index 5b6d8753..47361b5d 100644 --- a/TrafficMonitor/TrafficMonitor.vcxproj.filters +++ b/TrafficMonitor/TrafficMonitor.vcxproj.filters @@ -490,6 +490,9 @@ 源文件和头文件\公共的类\WindowsWebExperienceDetector + + 源文件和头文件\对话框类\SkinDlg + @@ -723,6 +726,9 @@ 源文件和头文件\公共的类\WindowsWebExperienceDetector + + 源文件和头文件\对话框类\SkinDlg + diff --git a/TrafficMonitor/TrafficMonitorDlg.cpp b/TrafficMonitor/TrafficMonitorDlg.cpp index 4457987b..aa13ba29 100644 --- a/TrafficMonitor/TrafficMonitorDlg.cpp +++ b/TrafficMonitor/TrafficMonitorDlg.cpp @@ -922,6 +922,69 @@ void CTrafficMonitorDlg::CheckClickedItem(CPoint point) } } +int CTrafficMonitorDlg::FindSkinIndex(const wstring& skin_name) +{ + int skin_selected = 0; + for (size_t i{}; i < m_skins.size(); i++) + { + if (m_skins[i] == skin_name) + skin_selected = static_cast(i); + } + return skin_selected; +} + +void CTrafficMonitorDlg::ApplySkin(int skin_index) +{ + if (skin_index < 0 || skin_index >= static_cast(m_skins.size())) + return; + m_skin_selected = skin_index; + theApp.m_cfg_data.m_skin_name = m_skins[m_skin_selected]; + //获取皮肤布局 + LoadSkinLayout(); + //载入背景图片 + LoadBackGroundImage(); + //获取皮肤的文字颜色 + theApp.m_main_wnd_data.specify_each_item_color = m_skin.GetSkinInfo().specify_each_item_color; + int i{}; + for (const auto& item : theApp.m_plugins.AllDisplayItemsWithPlugins()) + { + theApp.m_main_wnd_data.text_colors[item] = m_skin.GetSkinInfo().TextColor(i); + i++; + } + //SetTextColor(); + //获取皮肤的字体 + if (theApp.m_general_data.allow_skin_cover_font) + { + if (!m_skin.GetSkinInfo().font_info.name.IsEmpty()) + { + theApp.m_main_wnd_data.font.name = m_skin.GetSkinInfo().font_info.name; + theApp.m_main_wnd_data.font.bold = m_skin.GetSkinInfo().font_info.bold; + theApp.m_main_wnd_data.font.italic = m_skin.GetSkinInfo().font_info.italic; + theApp.m_main_wnd_data.font.underline = m_skin.GetSkinInfo().font_info.underline; + theApp.m_main_wnd_data.font.strike_out = m_skin.GetSkinInfo().font_info.strike_out; + } + if (m_skin.GetSkinInfo().font_info.size >= MIN_FONT_SIZE && m_skin.GetSkinInfo().font_info.size <= MAX_FONT_SIZE) + theApp.m_main_wnd_data.font.size = m_skin.GetSkinInfo().font_info.size; + SetTextFont(); + } + //获取项目的显示文本 + bool cover_str_setting{ !m_skin.GetSkinInfo().display_text.IsInvalid() }; + if (theApp.m_general_data.allow_skin_cover_text && !m_skin.GetLayoutInfo().no_label && cover_str_setting) + { + theApp.m_main_wnd_data.disp_str = m_skin.GetSkinInfo().display_text; + } + SetItemPosition(); + Invalidate(FALSE); //更换皮肤后立即刷新窗口信息 + //重新设置WS_EX_LAYERED样式,以解决在png皮肤和bmp皮肤之间切换时显示不正常的问题 + //清除窗口的分层样式 + SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) & ~WS_EX_LAYERED); + //重新设置透明度 + SetTransparency(); + + theApp.SaveConfig(); + +} + bool CTrafficMonitorDlg::IsTemperatureNeeded() const { //判断是否需要从OpenHardwareMonitor获取信息。 @@ -988,12 +1051,7 @@ BOOL CTrafficMonitorDlg::OnInitDialog() }); if (m_skins.empty()) m_skins.push_back(L""); - m_skin_selected = 0; - for (unsigned int i{}; i < m_skins.size(); i++) - { - if (m_skins[i] == theApp.m_cfg_data.m_skin_name) - m_skin_selected = i; - } + m_skin_selected = FindSkinIndex(theApp.m_cfg_data.m_skin_name); //根据当前选择的皮肤获取布局数据 LoadSkinLayout(); @@ -1692,6 +1750,12 @@ void CTrafficMonitorDlg::OnTimer(UINT_PTR nIDEvent) } } + //根据深色/浅色模式自动切换皮肤 + if (theApp.m_win_version.IsWindows10OrLater() && theApp.m_cfg_data.skin_auto_adapt) + { + int skin_index = FindSkinIndex(light_mode ? theApp.m_cfg_data.skin_name_light_mode : theApp.m_cfg_data.skin_name_dark_mode); + ApplySkin(skin_index); + } } //根据任务栏颜色自动设置任务栏窗口背景色 @@ -2385,50 +2449,7 @@ void CTrafficMonitorDlg::OnChangeSkin() skinDlg.m_pFont = &m_font; if (skinDlg.DoModal() == IDOK) { - m_skin_selected = skinDlg.m_skin_selected; - theApp.m_cfg_data.m_skin_name = m_skins[m_skin_selected]; - //获取皮肤布局 - LoadSkinLayout(); - //载入背景图片 - LoadBackGroundImage(); - //获取皮肤的文字颜色 - theApp.m_main_wnd_data.specify_each_item_color = skinDlg.GetSkinData().GetSkinInfo().specify_each_item_color; - int i{}; - for (const auto& item : theApp.m_plugins.AllDisplayItemsWithPlugins()) - { - theApp.m_main_wnd_data.text_colors[item] = skinDlg.GetSkinData().GetSkinInfo().TextColor(i); - i++; - } - //SetTextColor(); - //获取皮肤的字体 - if (theApp.m_general_data.allow_skin_cover_font) - { - if (!skinDlg.GetSkinData().GetSkinInfo().font_info.name.IsEmpty()) - { - theApp.m_main_wnd_data.font.name = skinDlg.GetSkinData().GetSkinInfo().font_info.name; - theApp.m_main_wnd_data.font.bold = skinDlg.GetSkinData().GetSkinInfo().font_info.bold; - theApp.m_main_wnd_data.font.italic = skinDlg.GetSkinData().GetSkinInfo().font_info.italic; - theApp.m_main_wnd_data.font.underline = skinDlg.GetSkinData().GetSkinInfo().font_info.underline; - theApp.m_main_wnd_data.font.strike_out = skinDlg.GetSkinData().GetSkinInfo().font_info.strike_out; - } - if (skinDlg.GetSkinData().GetSkinInfo().font_info.size >= MIN_FONT_SIZE && skinDlg.GetSkinData().GetSkinInfo().font_info.size <= MAX_FONT_SIZE) - theApp.m_main_wnd_data.font.size = skinDlg.GetSkinData().GetSkinInfo().font_info.size; - SetTextFont(); - } - //获取项目的显示文本 - if (theApp.m_general_data.allow_skin_cover_text && !skinDlg.GetSkinData().GetLayoutInfo().no_label) - { - theApp.m_main_wnd_data.disp_str = skinDlg.GetSkinData().GetSkinInfo().display_text; - } - SetItemPosition(); - Invalidate(FALSE); //更换皮肤后立即刷新窗口信息 - //重新设置WS_EX_LAYERED样式,以解决在png皮肤和bmp皮肤之间切换时显示不正常的问题 - //清除窗口的分层样式 - SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) & ~WS_EX_LAYERED); - //重新设置透明度 - SetTransparency(); - - theApp.SaveConfig(); + ApplySkin(skinDlg.m_skin_selected); } } diff --git a/TrafficMonitor/TrafficMonitorDlg.h b/TrafficMonitor/TrafficMonitorDlg.h index 4df03b23..356245a3 100644 --- a/TrafficMonitor/TrafficMonitorDlg.h +++ b/TrafficMonitor/TrafficMonitorDlg.h @@ -175,6 +175,11 @@ class CTrafficMonitorDlg : public CDialog //判断一个点在哪个显示项目的区域内,并保存到m_clicked_item void CheckClickedItem(CPoint point); + int FindSkinIndex(const wstring& skin_name); + + //应用一个皮肤 + void ApplySkin(int skin_index); + public: //void ApplySettings(); bool IsTemperatureNeeded() const; //判断是否需要显示温度信息 diff --git a/TrafficMonitor/resource.h b/TrafficMonitor/resource.h index 69a15fef..3c006c05 100644 --- a/TrafficMonitor/resource.h +++ b/TrafficMonitor/resource.h @@ -248,6 +248,7 @@ #define IDS_MEMORY_USED 340 #define IDD_TASK_BAR_DIALOG_NOREDIRECTIONBITMAP 340 #define IDS_MEMORY_AVAILABLE 341 +#define IDD_SKIN_AUTO_ADAPT_DLG 341 #define IDS_DOTNET_NOT_INSTALLED_TIP 342 #define IDS_VERSION_UPDATE 343 #define IDS_AVREAGE_TEMPERATURE 344 @@ -508,14 +509,17 @@ #define IDC_OPEN_SKIN_DIR_STATIC 1161 #define IDC_RESET_AUTO_RUN_BUTTON 1162 #define IDS_CPU_FREQ 1163 -#define IDC_WINDOW_OFFSET_TOP_NEGATIVE_CHECK 1166 +#define IDC_WINDOW_OFFSET_TOP_NEGATIVE_CHECK 1166 #define IDC_WINDOW_OFFSET_TOP_EDIT 1167 -#define IDC_VERTICAL_MARGIN_EDIT 1168 -#define IDC_VERTICAL_MARGIN_NEGATIVE_CHECK 1169 -#define ID_32771 32771 +#define IDC_VERTICAL_MARGIN_EDIT 1168 +#define IDC_VERTICAL_MARGIN_NEGATIVE_CHECK 1169 #define IDC_DISABLE_D2D 1170 #define IDC_GDI_RADIO 1171 #define IDC_D2D_RADIO 1172 +#define IDC_SKIN_AUTO_ADAPT_CHECK 1173 +#define IDC_SKIN_AUTO_ADAPT_BUTTON 1174 +#define IDC_DARK_MODE_SKIN_COMBO 1175 +#define IDC_LIGHT_MODE_SKIN_COMBO 1176 #define ID_32771 32771 #define ID_NETWORK_INFO 32772 #define ID_32773 32773 @@ -635,10 +639,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 341 +#define _APS_NEXT_RESOURCE_VALUE 343 #define _APS_NEXT_COMMAND_VALUE 33665 - -#define _APS_NEXT_CONTROL_VALUE 1173 +#define _APS_NEXT_CONTROL_VALUE 1177 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif