1

メインメニューバーにCMenuを使用するMFCアプリがあります。
サブメニューを正常に作成できませんでした。

最初のレベルのファイル、編集、表示などとそれらのサブメニューを使用できますが、これらのメニューの1つからサブメニューを作成することはできません。

たとえば、サブメニューの[ファイル]->[最近のアイテム]->[アイテムのリスト
]に移動できるようにしたい のですが、これはVSのリソースエディターで簡単に実行できますが、動的に実行する必要があります。

CMenuで適切なクラスを使用していますか?何を試すべきかについての提案はありますか?
まともなチュートリアルは見つかりませんでした。私を正しい方向に向けるだけでも役に立ちます。

4

2 に答える 2

2

リソースエディタを使用して、1つのプレースホルダー項目を含むサブメニューを追加します。次に、プログラムでこのサブメニューへの参照を取得し、それにアイテムを追加して、プレースホルダーアイテムを削除できます。

CMenu *subMenu = mainMenu.GetSubMenu( menuPosition );

if( subMenu )
{
    for( unsigned i = 0; i < stringArray.size(); i++ )
    {
        subMenu->AppendMenu( MF_STRING, 400 + i, stringArray[i]);
    }

    subMenu->DeleteMenu( ID_SUBMENU_PLACEHOLDER, MF_BYCOMMAND );
}
于 2009-07-21T15:51:45.793 に答える
0

私は今日も同じことをしなければなりませんでした。私は VS2008 で機能パック (新しい UI のもの) を使用していて、サンプルを見ていて、メニュー項目を動的に追加する方法のサンプルがあります ( http://msdn.microsoft. com/en-us/library/bb983167.aspx )

CFrameWndEx::OnShowPopupMenu メソッドをオーバーライドする必要があります。

最大。

于 2009-07-21T01:11:17.413 に答える