2015-10-27 72 views
0

根據this documentation,你應該能夠覆蓋wxTaskBarIcon::CreatePopupMenu(),以便當用戶右鍵單擊該圖標時,彈出一個菜單。無法讓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; 
} 

的圖標出現就好了,工具提示是正確的,但沒有點擊它實際上的安裝確實什麼。

回答

0

我沒有看到你的代碼有什麼問題,但是你不顯示你是如何創建圖標的 - 對於一個愚蠢的問題抱歉,但是你真的創建了派生TaskBarIcon對象嗎?

此外,我強烈建議您檢查哪個任務欄樣本,其中overrides this method。如果這個示例不適用於你,那麼它將成爲wxWidgets中的一個bug,但如果它確實存在,那麼希望你能找到它和你的代碼之間的差異,並解決後者中的問題。