wxWidget入门(三)

这一次讲一讲菜单栏吧

先介绍下组成的三个成员

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)

快去实现吧。。。至于每一项的功能,某一期会讲得,敬请期待,谢谢。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值