c++ - 如何填充 MFC C++ 应用程序中的 Windows 菜单

标签 c++ mfc menu stingray

在 MFC 下提供给文档/ View 应用程序的标准菜单之一是 Windows 菜单。它提供平铺和级联窗口之类的功能,并在菜单末尾附加当前可用 View 的枚举列表。问题是,有时它不会,我想知道为什么。更具体地说,我想知道如何刷新此列表,因为我想在 GUI 自动化工具下使用它。通常列表在那里,有时却没有,有人知道为什么吗?我的猜测是 CFrameWnd 类中有一个函数可以处理这个问题,但我似乎找不到它。

编辑:我还在使用 GUI 的 Stingray 库,这很可能与问题有关。

最佳答案

更新菜单和窗口标题在两种方法中分别处理。

  • CFrameWnd::OnUpdateFrameMenu(..) 仅实现框架菜单,
  • CFrameWnd::OnUpdateFrameTitle(..) 仅刷新框架的名称。

我认为某处调用顺序错误,更新标题将晚于更新菜单。毕竟,窗口菜单中的标题有时仍然是一个空字符串。

最简单的修复方法是使用 GetActiveFrame()->ActivateFrame() 方法调用。它将立即刷新实际的框架窗口和拥有的窗口菜单。 它可以在创建 CDocument 和 CView 后使用。调用它的最佳位置是 OnFileNew 的末尾,OnFileOpen 应用程序 (CWin)App 类的重写方法。

关于c++ - 如何填充 MFC C++ 应用程序中的 Windows 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2426562/

相关文章:

html - 在父元素下方居中滚动菜单

c++ - 在 Windows 7 中释放写入权限

c++ - 如何检测无模式 CDialog 是否已关闭?

c++ - WinHttpSetOption() 设置 TLSv1.2 失败,错误代码为 ERROR_INTERNET_INCORRECT_HANDLE_TYPE

.net - MFC 与 CLR?

html - 带 CSS 和 HTML 的按钮 - 按 ID 选择

javascript - Onclick 菜单打开缓慢

运算符中的 c++ 空格,规则是什么

c++ - C++ 中的编码实践,您的选择是什么,为什么?

c++ - 警告 : overloaded virtual function "Base::process" is only partially overridden in class "derived"