【问题标题】:wxDialog with the wxMenuBarwxDialog 与 wxMenuBar
【发布时间】:2010-10-28 12:20:20
【问题描述】:

我有大量使用 wxWidgets 的现有代码。主窗口是 wxDialog。现在我必须在该对话框中添加一个 wxMenuBar。但是,为了做到这一点,窗口应该从 wxFrame 派生。

是否可以在 wxDialog 中添加 wxMenuBar? 如果不是,是否可以将现有代码转换为主窗口从 wxFrame 派生而不是从 wxDialog 派生的方式?

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    无法将原生菜单栏添加到 wxDialog,但是,可以使用非原生菜单栏控件,如 wxFlatMenuBar(不包含在 wxWidgets 中),并将其添加到对话框顶部,就像这只是另一个控制。另请注意,除了作为非本地菜单栏之外,您也无法像 wxUpdateUIEvents 一样使用某些 wxWidgets API 来管理它。

    在将 wxDialog 更改为 wxFrame 时,您至少需要考虑几件事。

    首先,如果您的对话框是模态对话框,则需要手动将新框架设置为模态(使用 wxWindow::MakeModal())而不是调用 ShowModal()。

    其次,如果您为肯定(例如确定/应用按钮)或转义(取消或窗口关闭)事件设置了任何事件处理程序,您可能需要重写它们以处理窗口行为的变化。

    【讨论】:

    • 感谢您的回答。经过一番挖掘,我得出了同样的结论——wxDialog 上没有菜单。由于这个应用程序只在 Windows 操作系统上运行,我决定使用纯 Win32 API 添加一个菜单。它按预期工作。关于 wxDialog->wxFrame 更改,我遇到了太多问题,所以我决定放弃这种方法。但是,你提到的这些注意事项很高兴知道!
    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 2012-12-07
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多