0

MFC の下でドキュメント/ビュー アプリに提供される標準メニューの 1 つは、Windows メニューです。ウィンドウのタイリングやカスケードなどを提供し、メニューの最後に現在使用可能なビューの列挙リストを追加します。問題は、そうでない場合があることです。その理由を知りたいです。具体的には、GUI 自動化ツールで使用したいので、このリストを更新する方法を知りたいです。通常、リストは存在しますが、存在しない場合もあります。理由を知っている人はいますか? 私の推測では、これを処理する関数が CFrameWnd クラスの奥深くにあるのですが、それが見つからないようです。

編集:私はGUI用のStingrayライブラリも使用していますが、これは問題に関係している可能性があります。

4

1 に答える 1

1

メニューとウィンドウ タイトルの更新は、2 つの方法で別々に処理されます。

  • CFrameWnd::OnUpdateFrameMenu(..)フレームメニューのみを実現し、
  • CFrameWnd::OnUpdateFrameTitle(..)フレームの名前だけを更新します。

どこか呼び出し順序が間違っていて、メニューの更新よりもタイトルの更新が遅くなると思います。結局、ウィンドウ メニューのタイトルが空の文字列のままになることがあります。

修復する最も簡単な方法は、GetActiveFrame()->ActivateFrame()メソッド呼び出しを使用することです。実際のフレーム ウィンドウと所有するウィンドウ メニューもすぐに更新されます。CDocument と CView を作成した後に使用できます。これを呼び出すのに最適な場所は、アプリケーションの (CWin)App クラスのオーバーライドされたメソッドのOnFileNew末尾です。OnFileOpen

于 2011-01-27T11:34:46.203 に答える