gpt4 book ai didi

c++ - 在c++ mfc vs2015中获取弹出资源菜单项的id

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:40:31 25 4
gpt4 key购买 nike

我正在本地化一个 mfc 应用程序。我的方法是创建一个仅包含 gui 翻译拷贝的资源 dll。我的问题是源代码中有些地方是通过字符串名称找到弹出资源的。由于我已将这些字符串翻译成另一种语言,因此这些功能不再有效。我的预期解决方案是通过 ID 查找这些元素,但是当我尝试这样做时,我发现它们似乎没有唯一的 ID。

请参阅下面我正在使用的 .rc 文件的片段,请注意弹出资源和操作没有 ID:

IDR_MAINFRAME MENU
BEGIN
POPUP "&Action"
BEGIN
MENUITEM "&Tracking Start\tF2", ID_TRACKING_START
MENUITEM "Record...\tCtrl+R", ID_RECORDING_STREAMTOFILE
MENUITEM "Mouse Control Start\tF9", ID_ACTION_MOUSECONTROL
MENUITEM "Reflex Reduction\tF12", ID_REFLEXREDUCTION_TOGGLE
POPUP "Text &Log"
BEGIN
MENUITEM "Select Log&file...", ID_LOGGING_FILE
MENUITEM "Start &Logging\tF6", ID_LOGGING_LOG
END
MENUITEM SEPARATOR
MENUITEM "E&xit\tAlt+F4", ID_APP_EXIT
END
END

下面是通过字符串名称查找 UI 元素的代码片段

int CMainFrame::FindMenuItem(CMenu* Menu, LPCTSTR MenuString)
{
ASSERT(Menu);
ASSERT(::IsMenu(Menu->GetSafeHmenu()));

int count = Menu->GetMenuItemCount();
for (int i = 0; i < count; i++)
{
CString str;
if (Menu->GetMenuString(i, str, MF_BYPOSITION) && (strcmp(str,
MenuString) == 0))
{
return i;
}
}
return -1;
}

谷歌搜索后,我发现了一个名为 MENUEX https://learn.microsoft.com/en-us/windows/desktop/menurc/menuex-resource 的东西。您似乎可以将 ID 添加到弹出资源元素吗?然而,当我再次尝试更改 .rc 文件以使用 MENUEX 而不是 MENU 时,我的 vs2015 编译器根本不批准,现在我有点卡住了。

提前感谢任何知道如何解决我的问题的人!

最佳答案

只是想提供一个更新,我能够用 Alex F 的想法解决我的问题。谢谢亚历克斯!但是我想补充一点,我并没有真正找到令人满意的解决方案,但我想这是 mfc 的问题。

关于c++ - 在c++ mfc vs2015中获取弹出资源菜单项的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com