和菜单有关的类主要有两个: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. float、clear、overflow

    浮动: float:  none|left|right 作用使得标签失去块级标签的独占一行效果,向某个方向靠拢 标签浮动了,也需要占地方,有时候出现未浮动的div覆盖部分浮动div是浏览器的bug情况 ...

  2. oracle数据类型及其隐式转换

    oracle有三种最基本的数据类型,即字符型.数值型.日期型. oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数,如下: 1)to_char     ...

  3. C语言基础:函数指针 分类: iOS学习 c语言基础 2015-06-10 21:55 15人阅读 评论(0) 收藏

    函数指针:指向函数的指针变量. 函数名相当于首地址. 函数指针定义:返回值类型  (*函数指针变量名)(参数类型1,参数类型2,....)=初始值 函数指针类型:返回值类型  (*)(参数类型1,参数 ...

  4. Mac下百度网盘破解

    Mac版百度网盘破解 先下载正版的百度网盘 打开终端输入命令  cd ~/Downloads && git clone https://github.com/CodeTips/Baid ...

  5. php curl批处理

    php模拟多线程用到curl库,这个库很强大,可以做好多事,比如模拟登陆,文件上传/下载,数据采集等. 下面是我的代码,很简单,有些还功能还不会用. <?php $node_urls=array ...

  6. [团队项目]SCRUM项目6.0 7.0

    6.0----------------------------------------------------- sprint演示 1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉 ...

  7. 南阳oj-ASCII码排序-用了一个晚上

    #include <iostream> #include <sstream> #include <stdio.h> #include <string> ...

  8. CSI-MIPI学习笔记

    一.mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系 公式: Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x ...

  9. Cygwin安装与使用入门

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/canlets/article/details/28646115 对于 UNIX 本身,也有各种称呼. ...

  10. [转]Spring事务<tx:annotation-driven/>

    在使用SpringMVC的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx.mvc 等也能很直白的理解出来分别的作用.<tx: ...