wxWidgets:菜单

和菜单有关的类主要有两个:wxMenuItem和wxMenu。wxMenuItem用于表示一个菜单项,而wxMenu是wxMenuItem的弹出或下拉列表。

现在让我们看看如何给我们的框架类加上菜单:

MyFrame::MyFrame
    : wxFrame
{
    // 新建下拉菜单
    // 该下拉菜单将显示在MyFrame的MenuBar上
    // 所以我们不希望它有自己的标题栏
    // 如果为其构造函数指定wxString参数
    // 该string将在这个menu显示出来时作为其标题栏一并显示出来
    wxMenu *menuFile = new wxMenu();
    // 菜单项:Open
    wxMenuItem *menuItemOpen = new wxMenuItem(menuFile, ID_MENUITEM_OPEN, L"Open...");
    // 菜单项:Close
    wxMenuItem *menuItemClose = new wxMenuItem(menuFile, ID_MENUITEM_CLOSE, L"Close...");
    // 将菜单项Open加入下拉菜单
    menuFile->Append(menuItemOpen);
    // 将菜单项Close加入下拉菜单
    menuFile->Append(menuItemClose);
    // 创建菜单条
    wxMenuBar *menuBar = new wxMenuBar();
    // 将下拉菜单加入菜单条
    // 该下拉菜单将在menuBar上显示为”File"
    menuBar->Append(menuFile, L"File");
    // 设置MyFrame的菜单条
    SetMenuBar(menuBar);
}                

 每一列下拉菜单(或弹出菜单)都是一个wxMenu对象;每一个子菜单本身也是一列下拉菜单,因此也是一个wxMenu对象。

下面的代码给File菜单增加一个Recent Files子菜单,这个子菜单有两个item:R1和R2。

    // 子菜单本身也是一个wxMenu对象
    wxMenu *menuRecent = new wxMenu();
    // 子菜单的两个菜单项
    wxMenuItem *menuItemR1 = new wxMenuItem(menuRecent, ID_MENUITEM_R1, L"R1");
    wxMenuItem *menuItemR2 = new wxMenuItem(menuRecent, ID_MENUITEM_R2, L"R2");
    menuRecent->Append(menuItemR1);
    menuRecent->Append(menuItemR2);
    // 使用wxMenu对象的AppendSubMenu函数将子菜单加入File菜单列
    menuFile->AppendSubMenu(menuRecent, "Recent Files");

下面的代码将菜单项选择事件与某个处理函数关联:

Bind(wxEVT_MENU, &MyFrame::OnMenuItemOpen, this, ID_MENUITEM_OPEN);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值