【发布时间】:2010-10-28 12:20:20
【问题描述】:
我有大量使用 wxWidgets 的现有代码。主窗口是 wxDialog。现在我必须在该对话框中添加一个 wxMenuBar。但是,为了做到这一点,窗口应该从 wxFrame 派生。
是否可以在 wxDialog 中添加 wxMenuBar? 如果不是,是否可以将现有代码转换为主窗口从 wxFrame 派生而不是从 wxDialog 派生的方式?
【问题讨论】:
我有大量使用 wxWidgets 的现有代码。主窗口是 wxDialog。现在我必须在该对话框中添加一个 wxMenuBar。但是,为了做到这一点,窗口应该从 wxFrame 派生。
是否可以在 wxDialog 中添加 wxMenuBar? 如果不是,是否可以将现有代码转换为主窗口从 wxFrame 派生而不是从 wxDialog 派生的方式?
【问题讨论】:
无法将原生菜单栏添加到 wxDialog,但是,可以使用非原生菜单栏控件,如 wxFlatMenuBar(不包含在 wxWidgets 中),并将其添加到对话框顶部,就像这只是另一个控制。另请注意,除了作为非本地菜单栏之外,您也无法像 wxUpdateUIEvents 一样使用某些 wxWidgets API 来管理它。
在将 wxDialog 更改为 wxFrame 时,您至少需要考虑几件事。
首先,如果您的对话框是模态对话框,则需要手动将新框架设置为模态(使用 wxWindow::MakeModal())而不是调用 ShowModal()。
其次,如果您为肯定(例如确定/应用按钮)或转义(取消或窗口关闭)事件设置了任何事件处理程序,您可能需要重写它们以处理窗口行为的变化。
【讨论】: