【发布时间】:2012-09-13 03:22:45
【问题描述】:
我有一个 wxMenuBar 和一个 wxMenu。我可以使用 Append(...) 成功地将菜单附加到菜单栏。我也可以使用 Remove(...) 成功删除菜单。
“菜单”示例演示了添加和删除菜单:它创建一个菜单,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 中产生一个断言错误,即附加菜单两次。
我真的不知道自己在做什么,如果有人能解释这样做的“正确”方法,我将不胜感激。
【问题讨论】:
标签: wxwidgets