2010-03-11 27 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)應用程序類的方法。

相關問題