0

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

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

4

1 回答 1

1

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

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

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

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

于 2011-01-27T11:34:46.203 回答