这一次讲一讲菜单栏吧
先介绍下组成的三个成员
vxMenuBar:菜单栏,例如下图
vxMenu:菜单,例如下图
wxMenuItem:菜单个项
边贴代码边说明吧:
构建一个界面类,里面有这三种小伙伴。
class MyMenu : public wxFrame
{
public:
MyMenu(const wxString & title);
void OnQuit(wxCommandEvent &event);
wxMenuBar *menubar;
wxMenu *file;
wxMenu *imp;
wxMenuItem *quit;
};
详细看下面代码注释
MyMenu::MyMenu(const wxString & title):
wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(280, 180))
{
menubar = new wxMenuBar;
file = new wxMenu;
file->Append(wxID_ANY, wxT("&New")); //添加菜单各项 New
file->Append(wxID_ANY, wxT("&Open"));//添加菜单各项 Open
file->Append(wxID_ANY, wxT("&Save"));//添加菜单各项 Save
file->AppendSeparator(); //分隔符
imp = new wxMenu;
file->AppendSubMenu(imp, wxT("I&mport")); //添加子菜单 Import
//子菜单中 有如下三个菜单个项
imp->Append(wxID_ANY, wxT("Import newsfeed list..."));
imp->Append(wxID_ANY, wxT("Import bookmarks..."));
imp->Append(wxID_ANY, wxT("Import mail..."));
//菜单个项
quit = new wxMenuItem(file, wxID_EXIT, wxT("&Quit\tCtrl+Q"));
file->Append(quit);
menubar->Append(file, wxT("&File"));
SetMenuBar(menubar);
Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(MyMenu::OnQuit));//连接退出事件
Centre();
}
最后贴出全部代码实现:
#include <wx/wx.h>
class MyMenu : public wxFrame
{
public:
MyMenu(const wxString & title);
void OnQuit(wxCommandEvent &event);
wxMenuBar *menubar;
wxMenu *file;
wxMenu *imp;
wxMenuItem *quit;
};
MyMenu::MyMenu(const wxString & title):
wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(280, 180))
{
menubar = new wxMenuBar;
file = new wxMenu;
file->Append(wxID_ANY, wxT("&New"));
file->Append(wxID_ANY, wxT("&Open"));
file->Append(wxID_ANY, wxT("&Save"));
file->AppendSeparator(); //分隔符
imp = new wxMenu;
file->AppendSubMenu(imp, wxT("I&mport"));
imp->Append(wxID_ANY, wxT("Import newsfeed list..."));
imp->Append(wxID_ANY, wxT("Import bookmarks..."));
imp->Append(wxID_ANY, wxT("Import mail..."));
quit = new wxMenuItem(file, wxID_EXIT, wxT("&Quit\tCtrl+Q"));
file->Append(quit);
menubar->Append(file, wxT("&File"));
SetMenuBar(menubar);
Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(MyMenu::OnQuit));
Centre();
}
void MyMenu::OnQuit(wxCommandEvent &event)
{
Close();
}
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
bool MyApp::OnInit()
{
MyMenu *menu = new MyMenu(wxT("My Menu"));
menu->Show(true);
return true;
}
IMPLEMENT_APP(MyApp)
快去实现吧。。。至于每一项的功能,某一期会讲得,敬请期待,谢谢。