wxMenuBarとwxMenuがあります。Append(...)を使用して、メニューをメニューバーに正常にアタッチできます。Remove(...)を使用してメニューを正常に削除することもできます。
「menu」サンプルは、メニューの追加と削除を示しています。メニューを作成し、追加してから削除し、返されたポインタでdeleteを呼び出します。別のものを追加するには、まったく新しいメニューを作成します。したがって、再接続はありません。
ただし、特定のメニュー(またはそれを可能にする同等のもの)を追加、削除、および再追加できるようにしたいと思います。さらに、メモリリークがあってはなりません。
私が試してみました:
//startup
menubar->Append(menu,title);
//later
delete menubar->Remove(1);
これにより、メモリリークのない動作するプログラムが生成されます。不思議なことに、menubar-> Removeによって返されるポインタは、最初に追加されたポインタと同じではないことがわかりました。
私は試した:
//startup
menubar->Append(menu,title);
//later
delete menubar->Remove(1);
menubar->Append(menu,title); //add it back immediately after removing it.
これにより、appbase.cpp:1015にアサーションエラーが発生します。これは、メニューを2回アタッチすることに関するものです。
私は自分が何をしているのか本当にわかりません。誰かがこれを行うための「正しい」方法を説明してくれれば幸いです。