【问题标题】:Incorrect displaying of menu items text in status bar - wxWidgets 3.0状态栏中菜单项文本的错误显示 - wxWidgets 3.0
【发布时间】:2014-06-07 20:16:18
【问题描述】:

我正在 Win 7 x64 机器上使用 CodeBlocks 13.12 中的 wxWidgets 3.0 编写简单的 GUI 软件。

我想为框架创建一个菜单,框架中的每个项目在突出显示时都应该在状态栏中显示不同的文本。以下是我到目前为止所做的(仅代码的菜单部分)。菜单和状态栏按计划显示。问题是每个项目(在文件和数据子菜单中)在突出显示时在状态栏中显示“保存项目” - 这是第一个子菜单中的第一个项目。如何更改它以显示正确的菜单项名称?

代码:

    wxMenuBar* mbar = new wxMenuBar();

    wxMenu* fileMenu = new wxMenu(_T(""));
    //fileMenu->Append(, _("&"), _("")));
    fileMenu->Append(SaveProject, _("&Save project"), _("Save project"));
    fileMenu->Append(SaveProjectAs, _("&Save project as"), _("Save project as"));
    fileMenu->Append(OpenNewProject, _("&Open new project"), _("Open new project"));
    fileMenu->Append(OpenExistingProject, _("&Open existing project"), _("Open existing project"));
    fileMenu->AppendSeparator();
    fileMenu->Append(Quit, _("&Quit"), _("Quit"));

    mbar->Append(fileMenu, _("&File"));

    wxMenu* dataMenu = new wxMenu(_T(""));
    //fileMenu->Append(, _("&"), _("")));
    dataMenu->Append(ImportData, _("&Import data"), _("Import data"));
    dataMenu->Append(ExportData, _("&Export data"), _("Export data"));
    dataMenu->Append(SavaDataAs, _("&Save data as"), _("Save data as"));

    mbar->Append(dataMenu, _("&Data"));

    mainFrame->SetMenuBar(mbar);

【问题讨论】:

    标签: c++ menu wxwidgets windows-7-x64 statusbar


    【解决方案1】:

    我怀疑问题是由于您使用了重复的菜单 ID(例如,SaveProject 被使用了两次)。虽然不清楚为什么这会导致观察到的行为,但很明显您不能重用菜单 ID,因为您无法区分具有相同 ID 的两个项目生成的事件。所以不要这样做。

    【讨论】:

    • 感谢您的回复。您两次使用相同的菜单 ID 指出的事情是我的问题中的一个错字,我对其进行了编辑。我使用不同的枚举菜单 ID 的方式解决了这个问题。起初我是在 wxID_HIGHEST + 1 的帮助下完成的,但没有成功,我也不知道为什么。
    • 这看起来很可疑,创建菜单项是几乎所有 wxWidgets 程序都会完成的事情,如果这样的问题长时间被忽视,我会感到非常惊讶。我的第二个假设是你在你的程序中做了一些你没有向我们展示的其他事情,因为按照书面规定,在确保所有 ID 都是唯一的之后,这段代码肯定可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多