在 MFC 下为 Document/View 应用程序提供的标准菜单之一是 Windows 菜单。它提供了平铺和级联窗口之类的功能,并在菜单末尾附加了当前可用视图的枚举列表。问题是,有时它没有,我想知道为什么。更具体地说,我想知道如何刷新此列表,因为我想在 GUI 自动化工具下使用它。通常列表在那里,有时不是,有人知道为什么吗?我的猜测是 CFrameWnd 类中有一个函数可以处理这个问题,但我似乎找不到它。
编辑:我还在使用用于 GUI 的 Stingray 库,这很可能与问题有关。
更新菜单和窗口标题分别以两种方法处理。
CFrameWnd::OnUpdateFrameMenu(..)
仅实现框架菜单,CFrameWnd::OnUpdateFrameTitle(..)
仅刷新框架的名称。我认为某个地方的呼叫顺序错误,更新标题将晚于更新菜单。毕竟窗口菜单中的所有标题有时仍然是一个空字符串。
最简单的修复方法是使用GetActiveFrame()->ActivateFrame()
方法调用。它也会立即刷新实际的框架窗口和拥有的窗口菜单。它可以在创建 CDocument 和 CView 之后使用。调用它的最佳位置是在(CWin)App 应用程序类OnFileNew
的OnFileOpen
覆盖方法的末尾。