我有一个 wxMenuBar 和一个 wxMenu。我可以使用 Append(...) 成功地将菜单附加到菜单栏。我还可以使用 Remove(...) 成功删除菜单。
“menu”示例演示了添加和删除菜单:它创建一个菜单,Append-s,然后 Remove-s,在返回的指针上调用 delete。要添加另一个,它会创建一个全新的菜单。因此没有任何重新连接。
但是,我希望能够附加、删除和重新附加任何特定菜单(或允许这样做的等效菜单)。此外,它必须没有内存泄漏。
我努力了:
//startup
menubar->Append(menu,title);
//later
delete menubar->Remove(1);
这会产生一个没有内存泄漏的工作程序。奇怪的是,我发现 menubar->Remove 返回的指针与最初 Append-ed 的指针不同。
我试过了:
//startup
menubar->Append(menu,title);
//later
delete menubar->Remove(1);
menubar->Append(menu,title); //add it back immediately after removing it.
这会在 appbase.cpp:1015 中产生一个断言错误,这与两次附加菜单有关。
我真的不知道自己在做什么,如果有人能解释这样做的“正确”方法,我将不胜感激。