菜单类

2021-6-18 大约 7 分钟

# 菜单类

# 帮助说明

**“菜单类”类位于“MFC 界面基本类”**模块中,添加此模块才能使用本类中的功能。

# 菜单设计

设计流程如下图:

  1. 首先定义一个新的类,基础类务必填写**“菜单类”**,随后右键可以打开菜单设计器。

    img

  2. 左侧是具体菜单项目设计效果,右侧是常用的菜单项目设置。

  3. 无虚线的菜单属于**“根菜单”,根菜单不能单独存在,必须“向后插入”新菜单后使用“右移”**设置成子菜单。

  4. 如果想要让子菜单也拥有子菜单,继续点击**“右移”**增加虚线即可。

    img

  5. 设计完毕后效果如下图。

    img

# 实现窗口右键菜单

代码编写如下图:

  1. 首先设计一个菜单。

  2. 主窗口添加**“鼠标右键被放开”事件,调用“弹出菜单()”**方法就可以弹出菜单。

    img

运行效果如下图:

最终主窗口按下右键时会出现菜单。

img

# 右键和窗口菜单一致

通过上篇图文教程学会了右键菜单,但是会发现一个问题。

如果设计的菜单包含多个根菜单的时候,只会弹出第一个菜单。

img

下面实现弹出编辑菜单:

  1. 首先对已经设计好的窗口菜单进行复制一份,并修改类名后打开设计器。

    img

  2. 打开设计器后,如果想要弹出编辑菜单,就将其它菜单删除。

    img

  3. 删除效果如下图。

    img

  4. 删除后代码如下图,注意看编辑菜单的初始值,两个菜单中都是一致的。

    如果常量值一致,证明操作无误,方便接下来的菜单点击事件。

    img

  5. 添加窗口的**“鼠标右键被放开”**事件,并弹出右键菜单。

  6. 添加窗口的**“创建完毕”**事件,设置窗口菜单。

  7. 添加接收到命令事件,判断菜单被点击。

    此处的命令代码实际上就是菜单的常量值,直接判断**“2005”**也可以判断复制被点击。

    img

运行效果如下图:

最终可以看到窗口菜单和右键菜单都可以弹出信息框,证明两个菜单的命令是通用的,不用重复编写两套命令。

img

# 托盘图标菜单

代码编写如下图:

  1. 首先设计一个菜单。

  2. 主窗口创建完毕后设置托盘图标。

  3. 添加托盘事件并调用**“弹出托盘菜单”**方法。

    img

运行效果如下图:

最终右键托盘图标可以弹出被设计的菜单。

img

# 是否被允许

**“允许菜单项”**帮助文档如下图:

通过本方法可以设置菜单是否允许操作。

参数 1:提供要设置的菜单 ID。

参数 2:提供是否禁止,为真则禁止操作。

img

**“是否被允许”**帮助文档如下图:

通过本方法可判断指定菜单是否允许操作,返回真表示允许操作。

参数 1:提供要判断的菜单 ID 即可。

img

代码编写如下图:

1、窗口创建完毕后设置实例菜单,方便后续操作菜单。

2、按钮点击后通过菜单变量调用**“允许菜单项”“是否被允许”**两个方法。

img

运行效果如下图:

最终按钮点击后**“复制”**菜单会在禁止操作和允许操作之间进行切换。

img

# 删除菜单项

帮助文档如下图:

调用本方法课实现删除指定菜单。

参数 1:提供要删除的菜单 ID 即可。

img

代码编写如下图:

  1. 窗口创建完毕后设置菜单。

  2. 按钮点击后删除**“复制”**菜单。

    img

运行效果如下图:

最终可看到复制菜单被删除。

img

# 置菜单项提示

**“取菜单项提示”**帮助文档如下图:

通过本方法可以取出指定菜单的提示内容,无提示返回空文本。

**“置菜单项提示”**帮助文档如下图:

通过本方法可设置指定菜单的提示内容。

img

代码编写如下图:

  1. 窗口创建完毕后设置菜单。

  2. 按钮 1 点击后设置**“复制”**的菜单提示。

  3. 按钮 2 点击后取出**“复制”**的菜单提示。

    img

运行效果如下图:

最终可看到提示被成功设置和取出。

img

# 置菜单项标题

**“置菜单项标题”**帮助文档如下图:

通过本方法课设置指定菜单的标题。

img

**“取菜单项标题”**帮助文档如下图:

本方法可取出指定菜单的标题。

img

代码编写如下图:

  1. 窗口创建完毕后设置菜单。

  2. 按钮 1 点击后修改**“复制”**菜单的标题。

  3. 按钮 2 点击后取出**“复制”**菜单标题。

    img

运行效果如下图:

可以看到按钮点击前后,菜单标题被修改,并且也可以成功取出被修改的标题。

img

# 插入菜单项

帮助文档如下图:

通过本方法可在指定菜单位置插入一个菜单,成功返回菜单 ID。

参数 1:提供新菜单的 id 值,默认为 0.

参数 2:提供新菜单标题、

参数 3:提供在哪个菜单 ID 之前插入。

参数 4:如果指定本参数,将插入到指定菜单的子菜单尾部。

参数 5:提供新菜单的提示文本。

参数 6:提供是否选中此菜单。

参数 7:提供是否禁止操作此菜单。

img

代码编写如下图:

1、窗口创建完毕后设置窗口菜单。

2、按钮点击后在**“粘贴”前插入“火山菜单”**,同时选中此菜单。

img

运行效果如下图:

最终**“火山菜单”**被成功插入,并且也处于选中状态。

img

# 选中菜单项

**“是否被选中”**帮助文档如下图:

通过本方法可判断指定菜单是否被选中,如果菜单不存在将返回假。

设置成功返回真,失败返回假。

img

**“选中菜单项”**帮助文档如下图:

通过本方法可设置指定菜单是否被选中。

参数 1:提供要设置的菜单 ID。

参数 2:提供真将设置为选中状态,否则不选中。

img

代码编写如下图:

  1. 窗口创建完毕后设置菜单。

  2. 按钮 1 点击判断**“复制”**菜单是否被选中。

  3. 按钮 2 点击设置**“复制”**菜单选中。

    img

运行效果如下图:

最终可看到**“复制”**菜单被成功操作。

img

# 翻转菜单项选中状态

帮助文档如下图:

通过本方法可翻转菜单的选中状态,返回是否翻转成功。

img

代码编写如下图:

  1. 窗口创建完毕后载入菜单。

  2. 按钮点击后翻转复制菜单的选中状态。

    img

运行效果如下图:

可以看到**“复制菜单”**在选中和未选中之间翻转操作。

img

上次编辑于: 2021年6月18日 19:35