Skip to content

Commit 0a807b1

Browse files
committed
显示文本设置对话框中增加右键菜单,允许为单独的项目恢复默认
1 parent 7fcaefd commit 0a807b1

File tree

7 files changed

+82
-8
lines changed

7 files changed

+82
-8
lines changed

TrafficMonitor/DisplayTextSettingDlg.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ CString CDisplayTextSettingDlg::GetDialogName() const
3636

3737
BEGIN_MESSAGE_MAP(CDisplayTextSettingDlg, CBaseDialog)
3838
ON_BN_CLICKED(IDC_RESTORE_DEFAULT_BUTTON, &CDisplayTextSettingDlg::OnBnClickedRestoreDefaultButton)
39+
ON_COMMAND(ID_RESTORE_DEFAULT, &CDisplayTextSettingDlg::OnRestoreDefault)
40+
ON_NOTIFY(NM_RCLICK, IDC_LIST1, &CDisplayTextSettingDlg::OnNMRClickList1)
41+
ON_WM_INITMENU()
42+
ON_NOTIFY(NM_CLICK, IDC_LIST1, &CDisplayTextSettingDlg::OnNMClickList1)
3943
END_MESSAGE_MAP()
4044

4145

@@ -90,6 +94,8 @@ BOOL CDisplayTextSettingDlg::OnInitDialog()
9094
m_list_ctrl.SetEditColMethod(CListCtrlEx::EC_SPECIFIED); //设置列表可编辑
9195
m_list_ctrl.SetEditableCol({ 1 }); //设置可编辑的列
9296

97+
CCommon::LoadMenuResource(m_menu, IDR_DISPLAY_ITEM_CONTEXT_MENU); //装载右键菜单
98+
9399
return TRUE; // return TRUE unless you set the focus to a control
94100
// 异常: OCX 属性页应返回 FALSE
95101
}
@@ -143,3 +149,54 @@ void CDisplayTextSettingDlg::OnBnClickedRestoreDefaultButton()
143149
}
144150
}
145151
}
152+
153+
void CDisplayTextSettingDlg::OnRestoreDefault()
154+
{
155+
if (m_item_selected >= 0)
156+
{
157+
CTrafficMonitorDlg* pMainWnd = CTrafficMonitorDlg::Instance();
158+
if (m_main_window_text && pMainWnd != nullptr)
159+
{
160+
//主窗口恢复默认显示文本时,从皮肤获取
161+
SkinSettingData skin_setting_data;
162+
CSkinManager::SkinSettingDataFronSkin(skin_setting_data, pMainWnd->GetCurSkin());
163+
CommonDisplayItem display_item = GetDisplayItem(m_item_selected);
164+
std::wstring default_text = skin_setting_data.disp_str.GetConst(display_item);
165+
m_list_ctrl.SetItemText(m_item_selected, 1, default_text.c_str());
166+
}
167+
else
168+
{
169+
CommonDisplayItem display_item = GetDisplayItem(m_item_selected);
170+
std::wstring default_text = display_item.DefaultString(m_main_window_text);
171+
m_list_ctrl.SetItemText(m_item_selected, 1, default_text.c_str());
172+
}
173+
}
174+
}
175+
176+
void CDisplayTextSettingDlg::OnNMRClickList1(NMHDR* pNMHDR, LRESULT* pResult)
177+
{
178+
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
179+
m_item_selected = pNMItemActivate->iItem;
180+
//弹出右键菜单
181+
CMenu* pContextMenu = m_menu.GetSubMenu(0); //获取第一个弹出菜单
182+
CPoint point1; //定义一个用于确定光标位置的位置
183+
GetCursorPos(&point1); //获取当前光标的位置,以便使得菜单可以跟随光标
184+
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point1.x, point1.y, this); //在指定位置显示弹出菜单
185+
186+
*pResult = 0;
187+
}
188+
189+
void CDisplayTextSettingDlg::OnInitMenu(CMenu* pMenu)
190+
{
191+
CBaseDialog::OnInitMenu(pMenu);
192+
193+
bool selected_enable{ m_item_selected >= 0 };
194+
pMenu->EnableMenuItem(ID_RESTORE_DEFAULT, MF_BYCOMMAND | (selected_enable ? MF_ENABLED : MF_GRAYED));
195+
}
196+
197+
void CDisplayTextSettingDlg::OnNMClickList1(NMHDR* pNMHDR, LRESULT* pResult)
198+
{
199+
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
200+
m_item_selected = pNMItemActivate->iItem;
201+
*pResult = 0;
202+
}

TrafficMonitor/DisplayTextSettingDlg.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ class CDisplayTextSettingDlg : public CBaseDialog
2323

2424
CListCtrlEx m_list_ctrl;
2525
bool m_main_window_text{ false }; //如果为true,则为主窗口文本设置,否则为任务栏窗口设置
26+
CMenu m_menu;
27+
int m_item_selected{ -1 };
2628

2729
protected:
2830
virtual CString GetDialogName() const override;
@@ -36,4 +38,8 @@ class CDisplayTextSettingDlg : public CBaseDialog
3638
virtual BOOL OnInitDialog();
3739
virtual void OnOK();
3840
afx_msg void OnBnClickedRestoreDefaultButton();
41+
afx_msg void OnRestoreDefault();
42+
afx_msg void OnNMRClickList1(NMHDR* pNMHDR, LRESULT* pResult);
43+
afx_msg void OnInitMenu(CMenu* pMenu);
44+
afx_msg void OnNMClickList1(NMHDR* pNMHDR, LRESULT* pResult);
3945
};

TrafficMonitor/TrafficMonitor.rc

506 Bytes
Binary file not shown.

TrafficMonitor/language/English.ini

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ TXT_AUTO_SAVE_TO_PRESET_CHECK = "Auto-save taskbar window color settings to pres
254254

255255
; CDisplayTextSettingDlg
256256
TXT_TITLE_DISPLAY_TEXT_SETTING = "Display Text Settings"
257-
TXT_RESTORE_DEFAULT = "Restore &Default"
257+
TXT_RESTORE_DEFAULT = "Restore &Default for All"
258258

259259
; CDonateDlg
260260
TXT_TITLE_DONATE = "Donate"
@@ -493,4 +493,7 @@ TXT_TASK_MANAGER = "&Task Manager"
493493
;IDR_PLUGIN_MANAGER_MENU
494494
TXT_PLUGIN_DETAIL = "&Details..."
495495
TXT_PLUGIN_OPTIONS = "&Options..."
496-
TXT_PLUGIN_DISABLE = "D&isabled"
496+
TXT_PLUGIN_DISABLE = "D&isabled"
497+
498+
;IDR_DISPLAY_ITEM_CONTEXT_MENU
499+
TXT_RESTORE_DEFAULT = "&Restore Default"

TrafficMonitor/language/Simplified_Chinese.ini

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ TXT_AUTO_SAVE_TO_PRESET_CHECK = "自动保存任务栏窗口颜色设置到预
254254

255255
; CDisplayTextSettingDlg
256256
TXT_TITLE_DISPLAY_TEXT_SETTING = "显示文本设置"
257-
TXT_RESTORE_DEFAULT = "恢复默认(&D)"
257+
TXT_RESTORE_DEFAULT = "全部恢复默认(&D)"
258258

259259
; CDonateDlg
260260
TXT_TITLE_DONATE = "捐赠"
@@ -493,4 +493,7 @@ TXT_TASK_MANAGER = "任务管理器(&T)"
493493
;IDR_PLUGIN_MANAGER_MENU
494494
TXT_PLUGIN_DETAIL = "详细信息(&D)..."
495495
TXT_PLUGIN_OPTIONS = "选项(&O)..."
496-
TXT_PLUGIN_DISABLE = "禁用(&I)"
496+
TXT_PLUGIN_DISABLE = "禁用(&I)"
497+
498+
;IDR_DISPLAY_ITEM_CONTEXT_MENU
499+
TXT_RESTORE_DEFAULT = "恢复默认(&R)"

TrafficMonitor/language/Traditional_Chinese.ini

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ TXT_AUTO_SAVE_TO_PRESET_CHECK = "自動儲存工作列視窗色彩設定到預
254254

255255
; CDisplayTextSettingDlg
256256
TXT_TITLE_DISPLAY_TEXT_SETTING = "顯示文字設定"
257-
TXT_RESTORE_DEFAULT = "還原預設(&D)"
257+
TXT_RESTORE_DEFAULT = "全部還原預設(&D)"
258258

259259
; CDonateDlg
260260
TXT_TITLE_DONATE = "贊助"
@@ -493,4 +493,7 @@ TXT_TASK_MANAGER = "工作管理員(&T)"
493493
;IDR_PLUGIN_MANAGER_MENU
494494
TXT_PLUGIN_DETAIL = "詳細資訊(&D)..."
495495
TXT_PLUGIN_OPTIONS = "選項(&O)..."
496-
TXT_PLUGIN_DISABLE = "停用(&I)"
496+
TXT_PLUGIN_DISABLE = "停用(&I)"
497+
498+
;IDR_DISPLAY_ITEM_CONTEXT_MENU
499+
TXT_RESTORE_DEFAULT = "還原預設(&R)"

TrafficMonitor/resource.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
#define IDD_WIN11_TASKBAR_SETTING_DLG 344
8080
#define IDR_LANGUAGE 346
8181
#define IDR_LANGUAGE_DEFAULT 347
82+
#define IDR_DISPLAY_ITEM_CONTEXT_MENU 348
8283
#define IDS_PLUGIN_DETAILS 388
8384
#define IDC_STATIC_INFO 1001
8485
#define IDC_STATIC1 1002
@@ -462,13 +463,14 @@
462463
#define ID_PLUGIN_OPTIONS_TASKBAR 33407
463464
#define ID_PLUGIN_COMMAND_START 33408
464465
#define ID_PLUGIN_COMMAND_MAX 33664
466+
#define ID_RESTORE_DEFAULT 33665
465467

466468
// Next default values for new objects
467469
//
468470
#ifdef APSTUDIO_INVOKED
469471
#ifndef APSTUDIO_READONLY_SYMBOLS
470-
#define _APS_NEXT_RESOURCE_VALUE 348
471-
#define _APS_NEXT_COMMAND_VALUE 33665
472+
#define _APS_NEXT_RESOURCE_VALUE 349
473+
#define _APS_NEXT_COMMAND_VALUE 33666
472474
#define _APS_NEXT_CONTROL_VALUE 1220
473475
#define _APS_NEXT_SYMED_VALUE 101
474476
#endif

0 commit comments

Comments
 (0)