无法让 wxTaskBarIcon::CreatePopupMenu() 工作

Can't get wxTaskBarIcon::CreatePopupMenu() to work

本文关键字:工作 CreatePopupMenu wxTaskBarIcon      更新时间:2023-10-16

根据本文档,您应该能够重写wxTaskBarIcon::CreatePopupMenu(),以便当用户右键单击图标时,弹出一个菜单。

然而,无论我做什么,我似乎都不能强迫wxWidgets实际执行这个该死的方法!在这一点上,我不确定这是因为我做错了c++继承,还是因为我错误地使用了wxWidgets。但这真的让我发疯了!

#include <wx/taskbar.h>
#include <wx/menu.h>
#include <wx/string.h>
class TaskBarIcon : public wxTaskBarIcon
{
private:
    wxIcon _icon;
public:
    void SetTooltip(const std::string tooltip);
protected:
    virtual wxMenu * CreatePopupMenu();
};
void TaskBarIcon::SetTooltip(const std::string tooltip)
{
    wxString wx_tooltip(tooltip.c_str(), wxConvUTF8);
    this->SetIcon(_icon, wx_tooltip);
}
wxMenu * TaskBarIcon::CreatePopupMenu()
{
    wxMenu * menu = new wxMenu();
    menu->Append(wxID_CLOSE, wxT("Exit"));
    return menu;
}

图标看起来很好,工具提示是正确的,但没有加载点击它实际上

我在你的代码中没有看到任何错误,但是你没有显示你如何创建图标——抱歉,这是一个愚蠢的问题,但是你实际上创建了派生的TaskBarIcon对象吗?

另外,我强烈建议您检查覆盖此方法的任务栏示例。如果示例也不适合您,那么这可能是wxWidgets中的一个错误,但是如果它适合您,那么希望您可以找到它与代码之间的差异,并在后者中修复问题。