我有大量使用wxWidgets的现有代码。主窗口是wxDialog。现在,我必须向该对话框添加一个wxMenuBar。但是,为此,该窗口应从wxFrame派生。
是否可以将wxMenuBar添加到wxDialog?
如果不是,是否可以通过将主窗口从wxFrame而不是wxDialog派生的方式来转换现有代码?
最佳答案
不可能将本机菜单栏添加到wxDialog,但是,可以使用非本机菜单栏控件(如wxFlatMenuBar(不包括在wxWidgets中)),并将其添加到对话框顶部,就好像它只是另一个控件。还要注意,尽管除了成为非本地菜单栏之外,您还无法像wxUpdateUIEvents一样使用某些wxWidgets API对其进行管理。
将wxDialog更改为wxFrame时,至少需要考虑几件事。
首先,如果对话框是模式对话框,则需要手动将新框架设置为模式(使用wxWindow::MakeModal()),而不是调用ShowModal()。
其次,如果您为肯定事件(例如,“确定/应用”按钮)或转义事件(“取消”或“关闭窗口”)设置了事件处理程序,则可能需要重写它们以处理窗口行为的变化。