2010-03-11 105 views
0

在MFC下提供给Document/View应用程序的标准菜单之一是Windows菜单。它提供诸如平铺和级联窗口之类的东西,并在菜单的末尾附加当前可用视图的枚举列表。问题是,有时它不会,我想知道为什么。更具体地说,我想知道如何刷新这个列表,因为我想在GUI自动化工具下使用它。通常情况下,列表是有的,有时候不是,任何人都知道为什么?我的猜测是,在CFrameWnd类中有一个深层次的功能来处理这个问题,但我似乎无法找到它。如何填充MFC C++应用程序中的Windows菜单

编辑:我也使用Stingray图书馆的图形用户界面,可能会对问题的关系。

回答

1

更新菜单和窗口标题分为两种处理方式。

  • CFrameWnd::OnUpdateFrameMenu(..) actualises只有框架菜单,
  • CFrameWnd::OnUpdateFrameTitle(..)刷新帧的唯一名字。

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

最简单的修复方法是使用GetActiveFrame()->ActivateFrame()方法调用。它将立即刷新实际框架窗口和所拥有的窗口菜单。 它可以在创建CDocument和CView之后使用。最好的地方叫做OnFileNew,OnFileOpen覆盖(CWin)应用程序类的方法。

相关问题