和菜单有关的类主要有两个: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);

wxWidgets:菜单的更多相关文章

  1. wxWidgets

    wxWidgets Code::Blocks环境 Code::Blocks下载: Code::Blocks使用: codeblocks-16.01mingw-setup.exe 它的gcc版本为4.9 ...

  2. [wxWidgets] 1. 安装及"hello world"程序

    关于wxWidgets的优越已经在它的官方网站有所阐述,本文不再赘述. 本系列主要记录学习这个软件包过程中遇到的问题以及心得. 1.  安装 从源码安装虽然大多时候不是一件轻松的过程,但是基于以下两个 ...

  3. [ZETCODE]wxWidgets教程七:对话框

    本教程原文链接:http://zetcode.com/gui/wxwidgets/dialogs/ 翻译:瓶哥 日期:2013年12月9日星期一 邮箱:414236069@qq.com 主页:http ...

  4. [ZETCODE]wxWidgets教程六:事件处理

    本教程原文链接:http://zetcode.com/gui/wxwidgets/events/ 翻译:瓶哥 日期:2013年12月7号星期六 邮箱:414236069@qq.com 主页:http: ...

  5. [ZETCODE]wxWidgets教程四:菜单栏和工具栏

    本教程原文链接:http://zetcode.com/gui/wxwidgets/menustoolbars/ 翻译:瓶哥 日期:2013年11月28日星期四 邮箱:414236069@qq.com ...

  6. wxWidgets学习笔记——在屏幕上画简单的图形和文字

    在屏幕上画简单图形和显示图片.处理简单鼠标键盘事件 /*************************************************************** * Name: M ...

  7. 《使用wxWidgets进行跨平台程序开发》chap09——布局一个对话框

    ///////////////////////////////////////////////////////////////////////////// // Name: personalrecor ...

  8. 《使用wxWidgets进行跨平台程序开发》chap02——一个简单的应用程序

    // Name: minimal.cpp // Purpose: Minimal wxWidgets sample // Author: Julian Smart #include "wx/ ...

  9. 基于CodeBlocks上的wxWidgets开发环境配置

    本文摘自http://www.cnzui.com/?p=962 在原文的基础上根据自己的实践做了一些修改 我的IDE为C::B 12.11,wxWidgets版本为wxWidgets-2.8.12 在 ...

随机推荐

  1. Struts2自定义拦截器——完整实例代码

    比如一个网上论坛过滤系统,将网友发表的不文明.不和谐的语言,通过拦截器对这些文字进行自动替代. 该项目包含: 1.自定义拦截器(MyInterceptor.java) 2.发表评论的页面(news.j ...

  2. CreateFile DeviceIoControl dwIoControlCode——应用程序与驱动程序通信

    在“进程内存管理器中”的一个Ring0,Ring3层通信问题,之前也见过这样的代码,这次拆分出来详细总结一下. 先通过CreateFile函数得到设备句柄,CreateFile函数原型: HANDLE ...

  3. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(六)

    [周年庆]MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包 ...

  4. oracle获取执行计划及优缺点 详解

    一.获取执行计划的6种方法(详细步骤已经在每个例子的开头注释部分说明了):1. explain plan for获取: 2. set autotrace on : 3. statistics_leve ...

  5. IOS编码转化

    原文地址:http://blog.csdn.net/huifeidexin_1/article/details/7883984 iOS中编码转化 1.UTF-8转化 NSString *data =  ...

  6. IP addresses in C#

    在.Net网络库里面最大的优点就是IP地址和端口被成对处理,相比于UNIX中用的方法真是一个巨大的令人欢迎的进步..NET定义了两个类来处理关于IP地址的问题. One of the biggest ...

  7. webstrom vue配置eslint

    (得出结论,还是得从官方文档中找,哇!!) 1.安装eslint插件,可以从search in repositories中获得,或者:http://plugins.jetbrains.com/plug ...

  8. Centos编译Unix网络编程(第三版)卷1的源代码

    测试环境:Centos 1)在shell中输入./configure然后按回车(注意先让configure有执行权限 chomd 777 configure) 2)依次进入lib.libfree.li ...

  9. 【opencv基础】OpenCV从Mat中提取某些行或列

    这两个函数返回的是指向原矩阵内部位置的指针,类似于浅拷贝: code cv::Mat align_mean(cv::Mat mean, cv::Rect facebox, float scaling_ ...

  10. eclipse/idea批量替换空白行

    批量替换空行Ctrl+F 快捷方式打开Find/Replace工具窗选择Regular expression(idea是regex)项,允许查询匹配正则表达式在Find文本框输入正则表达式:^\s*\ ...