wxMenuBar:菜单栏是一系列可从框架顶部访问的菜单。需使用SetMenuBar(menubar_name)将菜单栏添加到窗口里。
wxMenu:菜单可用于构建菜单栏或弹出菜单。
Append、AppendCheckItem、AppendRadioItem分别添加普通菜单、可选项目、单选项目。菜单需通过menubar->Append(menu)关联到菜单栏。
menu-AppendSubMenu(menu_name,menu_label),可以添加子菜单。
SetBitmap可以为菜单添加图标。
一、main.h
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif // WX_PRECOMP
class MyApp:public wxApp
{
public:
virtual bool OnInit();
};
#endif // MAIN_H_INCLUDED
二、main.cpp
#include "main.h"
#include "simplemenu.h"
wxIMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
SimpleMenu *simplemenu = new SimpleMenu("Test Menu");
simplemenu->Show(true);
return true;
}
三、simplemenu.h
#ifndef SIMPLEMENU_H_INCLUDED
#define SIMPLEMENU_H_INCLUDED
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif // WX_PRECOMP
class SimpleMenu:public wxFrame
{
public:
SimpleMenu(const wxString& title);
void OnQuit(wxCommandEvent& event);
wxMenuBar *menubar;
wxMenu *menu;
};
#endif // SIMPLEMENU_H_INCLUDED
四、
#include "simplemenu.h"
SimpleMenu::SimpleMenu(const wxString& title)
:wxFrame(NULL,wxID_ANY,title,wxDefaultPosition,wxSize(280,180))
{
// wxInitAllImageHandlers();
wxImage::AddHandler(new wxPNGHandler);//使用PNG图片需要添加这句。
menubar = new wxMenuBar;
menu = new wxMenu;
menu->Append(wxStandardID::wxID_NEW,"&New");
menu->AppendSeparator();
//增加一个子项菜单
imp = new wxMenu;
imp->Append(wxStandardID::wxID_COPY,"&Copy");
imp->Append(wxStandardID::wxID_PASTE,"&Paste");
imp->Append(wxStandardID::wxID_SAVE,"&Save");
menu->AppendSubMenu(imp,"&Edit");
menu->AppendSeparator();
menu->AppendCheckItem(wxID_ANY,"CheckItem","help");
menu->AppendRadioItem(wxID_ANY,"RadioItem1","radio");
menu->AppendRadioItem(wxID_ANY,"RadioItem2","radio");
//通过MenuItem增加菜单项
quit=new wxMenuItem(menu,wxID_EXIT,"&Quit\tCtrl+Q");
quit->SetBitmap(wxBitmap("accerciser.png",wxBITMAP_TYPE_PNG));//菜单前面加个图
menu->Append(quit);
menubar->Append(menu,"&File");
SetMenuBar(menubar);
Bind(wxEVT_COMMAND_MENU_SELECTED,SimpleMenu::OnQuit,this ,wxID_EXIT);
this->Centre();
}
void SimpleMenu::OnQuit(wxCommandEvent &event)
{
Close(true);
}