在 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/