我在CFrameWnd派生类的OnCreate方法中使用CMenu :: ModifyMenu来更改菜单上的标题以匹配用户语言。

我正在使用VC ++设计器,并且菜单在.rc文件中声明。

对于MENUITEM元素,我按如下方式使用它:

m_wndMenu->ModifyMenu(ID_APP_EXIT, MF_BYCOMMAND, NULL, CString((LPWSTR) ID_APP_EXIT));


对于POPUP元素(没有ID),我按如下方式使用它:

m_wndMenu->ModifyMenu(0, MF_BYPOSITION | MF_STRING, NULL, CString((LPWSTR) ID_MENU_POPUP_FILE));


它可以按预期的方式来更改字幕,但是对于那些在更改字幕时最初被禁用的菜单项,它们将被启用。我该如何解决?

最佳答案

调用ModifyMenu后,可能必须显式禁用菜单项并设置工具提示文本。使用ModifyMenu将有效地破坏先前的菜单项并创建一个新菜单项。您将丢失资源文件中的任何设置和初始化,否则将丢失上一个项目或菜单上的设置和初始化。

查看备注:http://msdn.microsoft.com/en-us/library/4tbfebs6(v=vs.80).aspx

关于c++ - CMenu::ModifyMenu的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6834541/

10-10 04:31