在这个[ http://wiki.wxwidgets.org/WxMenu#PopUp-menus ]示例中,wxMenu是一个局部变量。
然后通过指针传递给PopupMenu,现在我总是假设,当我按指针提供菜单时,它会为我删除它(非常像面板和框架),在menu.html中没有提到复制构造函数,即使它被子类化了怎么办?(因此,通过扣减,它不会复制)
读:window.html#a8f715d238cf74a845488b0e2645e98df还声明,在菜单被取消之前,PopupMenu函数不会返回,如果这阻塞了整个GUI,那就太傻了。
所以我的问题是:
为什么PopupMenu不引用?wx是旧的,比现在的C++标准的一些东西(例如RTTI和一些内存结构现在由STL提供)更古老,但是引用是因为操作符重载,受到Algol68 (源代码,“C++的设计和进化”)的启发,后者比90年代早期更早,当时我相信wxWidgets已经出现了。
当弹出菜单打开时,有哪些约束?我想了解更多关于wx的内部结构,所以如果有人能给我指点一些资源,那就太棒了!我所知道的关于wx的很多东西都是从它的行为推断出来的。一开始我很高兴这个神奇的黑匣子为我做了GUI,但我很好奇它到底是如何工作的(我读过书:“wxWidgets中的跨平台GUI编程”和"wxPython“-这些书没有涵盖它)
在著名的wx图层中,有wxWidgets API --然后是wxWidgets Port --然后是所有特定于平台的东西,我想知道它们是如何工作/交互的。
[图:本PDF文件第44页,书中第8页:book.pdf ]
发布于 2013-12-22 15:16:10
不同的问题是不相关的。PopupMenu()接受指针的主要原因是历史原因(所有wxWidgets函数通常都使用指向任何窗口或菜单对象的指针)。但是较新的GetPopupMenuSelectionFromUser()引用了一个引用。然而,它们都是模式,也就是说,在菜单被取消之前,它们不会返回控制权。在内部,弹出菜单运行自己的事件循环,这是在本地GUI工具包中运行的(在Windows下肯定是这样),而不是wx本身,但这并不重要。
在任何情况下,PopupMenu()都不会获得传入指针的所有权。这样您就可以这样使用它:
void Foo() {
wxMenu menu;
menu.Append(...);
window->PopupMenu(&menu);
}但是,对于大多数情况,您只需使用更方便的GetPopupMenuSelectionFromUser()即可。
https://stackoverflow.com/questions/20725150
复制相似问题