在wxMenu的图画背景

时间:2015-11-17 14:16:27

标签: c++ wxwidgets

wxMenu中绘制背景没有Paint方法,因此我尝试制作自定义菜单并尝试收听#ifndef CUSTOMMENU_H #define CUSTOMMENU_H #include <wx/menu.h> #include <wx/dcclient.h> class CustomMenu : public wxMenu { public: //CustomMenu(); CustomMenu(const wxBitmap &bmpBackground); virtual ~CustomMenu(); void OnPaint(wxPaintEvent& event); wxDECLARE_EVENT_TABLE(); protected: private: wxBitmap bmpBackground; }; #endif // CUSTOMMENU_H ---------------------------------------------------------------------------- #include "CustomMenu.h" wxBEGIN_EVENT_TABLE(CustomMenu, wxMenu) EVT_PAINT(CustomMenu::OnPaint) wxEND_EVENT_TABLE() CustomMenu::CustomMenu(const wxBitmap &bmpBackground) :bmpBackground(bmpBackground) { } CustomMenu::~CustomMenu() { //dtor } void CustomMenu::OnPaint(wxPaintEvent& event){ wxPaintDC paintDC(this); paintDC.DrawBitmap(bmpBackground,0,0); } 事件并按以下方式绘制:< / p>

error: no matching function for call to 'wxPaintDC::wxPaintDC(CustomMenu* const)'|

但它会抛出wxMenu

如何绕过这个并在{{1}}上绘制背景图片?

1 个答案:

答案 0 :(得分:0)

您无法使用标准wxMenu执行此操作。请记住,wxWidgets为您提供了 native UI。原生菜单不支持任何主平台上的背景图像,因此wxWidgets也不支持。如果你绝对需要这个,你将需要使用你自己的自定义菜单小部件(它不会很容易实现,并且不会像原生菜单那样完全相同,所以它就是这样的。真的不建议。)