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