Skip to content

Commit 2c67508

Browse files
committed
完成菜单文本向ini文件的迁移
1 parent a565ab0 commit 2c67508

14 files changed

+208
-9
lines changed

TrafficMonitor/Common.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,48 @@ int CCommon::GetMenuItemPosition(CMenu* pMenu, UINT id)
10191019
return pos;
10201020
}
10211021

1022+
// 递归遍历菜单项并处理多语言翻译
1023+
static void TranslateMenuItems(CMenu& menu)
1024+
{
1025+
// 遍历菜单项
1026+
for (int i = 0; i < menu.GetMenuItemCount(); ++i)
1027+
{
1028+
UINT menuItemID = menu.GetMenuItemID(i);
1029+
CString menuText;
1030+
menu.GetMenuString(i, menuText, MF_BYPOSITION);
1031+
1032+
// 检查菜单项文本是否以TXT_开头
1033+
if (menuText.Left(4) == _T("TXT_"))
1034+
{
1035+
// 获取翻译后的文本
1036+
std::wstring key(menuText);
1037+
const std::wstring& translatedText = theApp.m_str_table.LoadMenuText(key);
1038+
1039+
// 更新菜单项文本
1040+
menu.ModifyMenu(i, MF_BYPOSITION | MF_STRING, menuItemID, translatedText.c_str());
1041+
}
1042+
1043+
if (menuItemID == -1)
1044+
{
1045+
// 这是一个弹出菜单(子菜单),递归处理
1046+
CMenu* pSubMenu = menu.GetSubMenu(i);
1047+
if (pSubMenu)
1048+
{
1049+
TranslateMenuItems(*pSubMenu); // 递归调用
1050+
}
1051+
}
1052+
}
1053+
}
1054+
1055+
void CCommon::LoadMenuResource(CMenu& menu, UINT res_id)
1056+
{
1057+
// 加载菜单资源
1058+
menu.LoadMenu(res_id);
1059+
1060+
// 处理菜单项翻译
1061+
TranslateMenuItems(menu);
1062+
}
1063+
10221064
bool CCommon::IsColorSimilar(COLORREF color1, COLORREF color2)
10231065
{
10241066
const int DIFF{ 24 };

TrafficMonitor/Common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,9 @@ class CCommon
319319
//获取一个菜单项的序号
320320
static int GetMenuItemPosition(CMenu* pMenu, UINT id);
321321

322+
//从资源文件加载一个菜单,并处理文本翻译
323+
static void LoadMenuResource(CMenu& menu, UINT res_id);
324+
322325
static bool IsColorSimilar(COLORREF color1, COLORREF color2);
323326

324327
//计算二进制中1的个数

TrafficMonitor/HistoryTrafficCalendarDlg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ BOOL CHistoryTrafficCalendarDlg::OnInitDialog()
179179
m_tool_tips.SetMaxTipWidth(800); //为鼠标提示设置一个最大宽度,以允许其换行
180180
m_tool_tips.AddTool(this, _T(""));
181181

182-
m_menu.LoadMenu(IDR_HISTORY_TRAFFIC_MENU);
182+
CCommon::LoadMenuResource(m_menu, IDR_HISTORY_TRAFFIC_MENU);
183183

184184
return TRUE; // return TRUE unless you set the focus to a control
185185
// 异常: OCX 属性页应返回 FALSE

TrafficMonitor/HistoryTrafficListDlg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ BOOL CHistoryTrafficListDlg::OnInitDialog()
259259
//显示列表数据
260260
ShowListData();
261261

262-
m_menu.LoadMenu(IDR_HISTORY_TRAFFIC_MENU);
262+
CCommon::LoadMenuResource(m_menu, IDR_HISTORY_TRAFFIC_MENU);
263263

264264
return TRUE; // return TRUE unless you set the focus to a control
265265
// 异常: OCX 属性页应返回 FALSE

TrafficMonitor/NetworkInfoDlg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ BOOL CNetworkInfoDlg::OnInitDialog()
293293
//SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); //取消置顶
294294
m_info_list.GetToolTips()->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
295295

296-
m_menu.LoadMenu(IDR_INFO_MENU); //装载右键菜单
296+
CCommon::LoadMenuResource(m_menu, IDR_INFO_MENU); //装载右键菜单
297297

298298
SetTimer(CONNECTION_DETAIL_TIMER, 1000, NULL);
299299

TrafficMonitor/PluginInfoDlg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ BOOL CPluginInfoDlg::OnInitDialog()
112112

113113
m_info_list.GetToolTips()->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
114114

115-
m_menu.LoadMenu(IDR_INFO_MENU); //装载右键菜单
115+
CCommon::LoadMenuResource(m_menu, IDR_INFO_MENU); //装载右键菜单
116116

117117
return TRUE; // return TRUE unless you set the focus to a control
118118
// 异常: OCX 属性页应返回 FALSE

TrafficMonitor/PluginManagerDlg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ BOOL CPluginManagerDlg::OnInitDialog()
156156

157157
EnableControl();
158158

159-
m_menu.LoadMenu(IDR_PLUGIN_MANAGER_MENU); //装载右键菜单
159+
CCommon::LoadMenuResource(m_menu, IDR_PLUGIN_MANAGER_MENU); //装载右键菜单
160160

161161
//设置菜单图标
162162
CMenuIcon::AddIconToMenuItem(m_menu.GetSubMenu(0)->GetSafeHmenu(), ID_PLUGIN_DETAIL, FALSE, theApp.GetMenuIcon(IDI_INFO));

TrafficMonitor/StrTable.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,13 @@ wstring CStrTable::LoadTextFormat(const wstring& key, const std::initializer_lis
104104
}
105105
return str;
106106
}
107+
108+
const wstring& CStrTable::LoadMenuText(const wstring& key) const
109+
{
110+
auto iter = m_menu_string_table.find(key);
111+
if (iter != m_menu_string_table.end())
112+
return iter->second;
113+
ASSERT(false);
114+
static std::wstring str_empty;
115+
return str_empty;
116+
}

TrafficMonitor/StrTable.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ class CStrTable
2424
// 载入翻译字符串,并将字符串中形如<%序号%>的字符串替换成可变参数列表中的参数
2525
wstring LoadTextFormat(const wstring& key, const std::initializer_list<CVariant>& paras) const;
2626

27+
const wstring& LoadMenuText(const wstring& key) const;
28+
29+
2730
// 获取默认字体名称
2831
const LanguageInfo& GetLanguageInfo() const { return m_language_info; }
2932

TrafficMonitor/TrafficMonitor.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -829,10 +829,10 @@ CString CTrafficMonitorApp::GetSystemInfoString()
829829
void CTrafficMonitorApp::InitMenuResourse()
830830
{
831831
//载入菜单
832-
m_main_menu.LoadMenu(IDR_MENU1);
833-
m_main_menu_plugin.LoadMenu(IDR_MENU1);
834-
m_taskbar_menu.LoadMenu(IDR_TASK_BAR_MENU);
835-
m_taskbar_menu_plugin.LoadMenu(IDR_TASK_BAR_MENU);
832+
CCommon::LoadMenuResource(m_main_menu, IDR_MENU1);
833+
CCommon::LoadMenuResource(m_main_menu_plugin, IDR_MENU1);
834+
CCommon::LoadMenuResource(m_taskbar_menu, IDR_TASK_BAR_MENU);
835+
CCommon::LoadMenuResource(m_taskbar_menu_plugin, IDR_TASK_BAR_MENU);
836836

837837
//为插件菜单添加额外项目
838838
m_main_menu_plugin_sub_menu.CreatePopupMenu();

0 commit comments

Comments
 (0)