YSTest: YSLib::UI::MenuHost类 参考

YSTest PreAlpha_b400_20130424 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 类型 | Public 成员函数 | Public 属性 | Protected 属性 | Private 成员函数 | 所有成员列表
YSLib::UI::MenuHost类 参考

菜单宿主。 更多...

`#include <menu.h>`

类 YSLib::UI::MenuHost 继承关系图:
[图例]
YSLib::UI::MenuHost 的协作图:
[图例]

## Public 类型

typedef Menu * | ItemType
| 菜单组项目类型：记录菜单控件指针。
typedef map< Menu::ID, ItemType > | MenuMap
| 菜单组类型。
typedef MenuMap::value_type | ValueType

## Public 成员函数

| MenuHost (Window &)
virtual | ~MenuHost ()
| 析构。
void | operator+= (const ValueType &)
| 向菜单组添加标识和指针指定的菜单。
void | operator+= (Menu &)
| 向菜单组添加菜单。
bool | operator-= (Menu::ID)
| 从菜单组移除菜单标识指定的菜单。
Menu & | operator[] (Menu::ID id)

访问菜单标识指定的菜单。

异常

  std::out_of_range | 异常中立：由 at 抛出。

bool | IsShowing (Menu::ID)
| 判断框架窗口中是否正在显示菜单标识指定的菜单。
bool | Contains (Menu::ID id)
| 判断菜单组中是否存在菜单标识指定的菜单。
bool | Contains (Menu &)
| 判断菜单组中是否存在指定的菜单。
void | Clear ()
| 清除菜单组。
void | Show (Menu::ID, ZOrderType=DefaultMenuZOrder)
| 按指定 Z 顺序显示菜单组中菜单标识指定的菜单。
void | Show (Menu &mnu, ZOrderType z=DefaultMenuZOrder)
| 按指定 Z 顺序显示指定菜单 mnu 。
void | ShowAll (ZOrderType=DefaultMenuZOrder)
| 按指定 Z 顺序显示菜单组中的所有菜单。
void | Hide (Menu::ID)
| 隐藏菜单组中菜单标识指定的菜单。
void | Hide (Menu &mnu)
| 隐藏指定菜单 mnu。
void | HideAll ()
| 隐藏菜单组中的所有菜单。
void | HideUnrelated (Menu &mnu, Menu &mnuParent)
| 隐藏从 mnu 起向上层遍历菜单树的过程中不相关的菜单。

## Public 属性

Window & | Frame
| 框架窗口。
map< IWidget *, Menu::ID > | Roots
| 根菜单关联映射。

## Protected 属性

MenuMap | mMenus
| 菜单组：存储非空菜单指针。

## Private 成员函数

void | ShowRaw (Menu &mnu, ZOrderType=DefaultMenuZOrder)
| 按指定 Z 顺序显示指定菜单 mnu 。
void | HideRaw (Menu &mnu)
| 隐藏指定菜单 mnu。
Private 成员函数 继承自 ystdex::noncopyable
| noncopyable (const noncopyable &)=delete
| 禁止复制构造。
noncopyable & | operator= (const noncopyable &)=delete
| 禁止赋值复制。
| noncopyable ()=default
| `protected` 构造：默认实现。
| ~noncopyable ()=default
| `protected` 析构：默认实现。

## 详细描述

菜单宿主。

自从
  build 252

在文件 menu.h 第 181 行定义.

## 成员类型定义说明

typedef Menu* YSLib::UI::MenuHost::ItemType

菜单组项目类型：记录菜单控件指针。

在文件 menu.h 第 184 行定义.

typedef map<Menu::ID, ItemType> YSLib::UI::MenuHost::MenuMap

菜单组类型。

在文件 menu.h 第 185 行定义.

typedef MenuMap::value_type YSLib::UI::MenuHost::ValueType

在文件 menu.h 第 186 行定义.

## 构造及析构函数说明

MenuHost::MenuHost | ( | Window & | frm | ) |

在文件 menu.cpp 第 234 行定义.

MenuHost::~MenuHost | ( |  | ) |

virtual

析构。

注解
  隐藏菜单组中的所有菜单并清理菜单组。

在文件 menu.cpp 第 237 行定义.

参考 Clear() , 以及 HideAll().

函数调用图:

## 成员函数说明

void MenuHost::Clear | ( |  | ) |

清除菜单组。

注解
  释放所有的菜单对象。

在文件 menu.cpp 第 293 行定义.

参考 delete_second_mem , 以及 mMenus.

参考自 ~MenuHost().

这是这个函数的调用关系图:

bool YSLib::UI::MenuHost::Contains | ( | Menu::ID | id | ) |

inline

判断菜单组中是否存在菜单标识指定的菜单。

在文件 menu.h 第 246 行定义.

参考自 HideUnrelated().

这是这个函数的调用关系图:

bool YSLib::UI::MenuHost::Contains | ( | Menu & |  | ) |

判断菜单组中是否存在指定的菜单。

void YSLib::UI::MenuHost::Hide | ( | Menu::ID |  | ) |

隐藏菜单组中菜单标识指定的菜单。

void YSLib::UI::MenuHost::Hide | ( | Menu & | mnu | ) |

inline

隐藏指定菜单 mnu。

前置条件
  断言： Contains(mnu) 。

在文件 menu.h 第 302 行定义.

参考 Contains() , 以及 YAssert.

函数调用图:

void MenuHost::HideAll | ( |  | ) |

隐藏菜单组中的所有菜单。

在文件 menu.cpp 第 339 行定义.

参考 ystdex::get_value,HideRaw() , 以及 mMenus.

参考自 HideUnrelated() , 以及 ~MenuHost().

函数调用图:

这是这个函数的调用关系图:

void MenuHost::HideRaw | ( | Menu & | mnu | ) |

private

隐藏指定菜单 mnu。

在文件 menu.cpp 第 351 行定义.

参考 Frame,YSLib::UI::Invalidate(),YSLib::UI::IsVisible() , 以及 YSLib::UI::ReleaseFocus().

参考自 HideAll() , 以及 HideUnrelated().

函数调用图:

这是这个函数的调用关系图:

void MenuHost::HideUnrelated | ( | Menu & | mnu,
|  | Menu & | mnuParent
| ) |  |

隐藏从 mnu 起向上层遍历菜单树的过程中不相关的菜单。

注解
  相关菜单指 mnu 的父菜单中的 mnuParent 及其直接或间接父菜单。
  若 `!Contains(mnuParent)` 或 mnuParent 不是 mnu 的直接或间接父菜单，则隐藏所有菜单。

在文件 menu.cpp 第 360 行定义.

参考 Contains(),HideAll(),HideRaw() , 以及 mMenus.

函数调用图:

bool MenuHost::IsShowing | ( | Menu::ID | id | ) |

判断框架窗口中是否正在显示菜单标识指定的菜单。

在文件 menu.cpp 第 276 行定义.

参考 YSLib::UI::MUIContainer::Contains(),Frame , 以及 mMenus.

函数调用图:

void YSLib::UI::MenuHost::operator+= | ( | const ValueType & |  | ) |

向菜单组添加标识和指针指定的菜单。

注解
  覆盖菜单对象的菜单标识成员；若菜单项已存在则覆盖旧菜单项。

void YSLib::UI::MenuHost::operator+= | ( | Menu & |  | ) |

向菜单组添加菜单。

注解
  标识由菜单对象的菜单标识成员指定；若菜单项已存在则覆盖旧菜单项。

bool MenuHost::operator-= | ( | Menu::ID | id | ) |

从菜单组移除菜单标识指定的菜单。

注解
  同时置菜单宿主指针为空。

在文件 menu.cpp 第 260 行定义.

参考 mMenus.

Menu& YSLib::UI::MenuHost::operator[] | ( | Menu::ID | id | ) |

inline

访问菜单标识指定的菜单。

异常

  std::out_of_range | 异常中立：由 at 抛出。

在文件 menu.h 第 234 行定义.

void YSLib::UI::MenuHost::Show | ( | Menu::ID | ,
|  | ZOrderType | = `DefaultMenuZOrder`
| ) |  |

按指定 Z 顺序显示菜单组中菜单标识指定的菜单。

void YSLib::UI::MenuHost::Show | ( | Menu & | mnu,
|  | ZOrderType | z = `DefaultMenuZOrder`
| ) |  |

inline

按指定 Z 顺序显示指定菜单 mnu 。

前置条件
  断言： Contains(mnu) 。

在文件 menu.h 第 271 行定义.

参考 Contains() , 以及 YAssert.

函数调用图:

void MenuHost::ShowAll | ( | ZOrderType | z = `DefaultMenuZOrder` | ) |

按指定 Z 顺序显示菜单组中的所有菜单。

在文件 menu.cpp 第 309 行定义.

参考 ystdex::get_value,mMenus , 以及 ShowRaw().

函数调用图:

void MenuHost::ShowRaw | ( | Menu & | mnu,
|  | ZOrderType | z = `DefaultMenuZOrder`
| ) |  |

private

按指定 Z 顺序显示指定菜单 mnu 。

在文件 menu.cpp 第 321 行定义.

参考 YSLib::UI::Window::Add(),Frame , 以及 YSLib::UI::RequestFocus().

参考自 ShowAll().

函数调用图:

这是这个函数的调用关系图:

## 类成员变量说明

Window& YSLib::UI::MenuHost::Frame

框架窗口。

在文件 menu.h 第 188 行定义.

参考自 HideRaw(),IsShowing() , 以及 ShowRaw().

MenuMap YSLib::UI::MenuHost::mMenus

protected

菜单组：存储非空菜单指针。

在文件 menu.h 第 191 行定义.

参考自 Clear(),HideAll(),HideUnrelated(),IsShowing(),operator-=() , 以及 ShowAll().

map<IWidget*, Menu::ID> YSLib::UI::MenuHost::Roots

根菜单关联映射。

自从
  build 363 指定向指定部件转移焦点时不进行隐藏的菜单的映射。

在文件 menu.h 第 200 行定义.

该类的文档由以下文件生成:

- menu.h
- menu.cpp