SimpleWindow
载入中...
搜索中...
未找到
sw::MenuItem类 参考

菜单项类 更多...

#include <MenuItem.h>

类 sw::MenuItem 继承关系图:
sw::FrameworkElement sw::ObservableObject sw::ITag< Variant > sw::DynamicObject sw::INotifyObjectDead sw::INotifyPropertyChanged

Public 成员函数

virtual ~MenuItem ()
 析构函数
 
virtual MenuItemGetParent () const override final
 获取逻辑树中的父元素
 
virtual int GetChildCount () const override final
 获取逻辑树中的子元素数量
 
virtual MenuItemGetChildAt (int index) const override final
 获取逻辑树中指定索引处的子元素
 
MenuItemAddChild (const MenuItemDesc &desc)
 向当前菜单项添加一个子菜单项
 
MenuItemInsertChild (int index, const MenuItemDesc &desc)
 向当前菜单项的指定索引处插入一个子菜单项
 
bool RemoveChildAt (int index)
 移除指定索引处的子菜单项
 
bool RemoveChild (MenuItem *child)
 移除指定子菜单项
 
void ClearChildren ()
 移除所有子菜单项
 
int IndexOf (MenuItem *child) const
 获取指定子菜单项在当前菜单项中的索引
 
void ResetChildren (std::initializer_list< MenuItemDesc > descs)
 重置子菜单项列表
 
MenuItemFindChildById (int id)
 查找对应ID的子菜单项
 
MenuItemFindChildByTag (uint64_t tag)
 查找对应tag的子菜单项
 
- Public 成员函数 继承自 sw::FrameworkElement
bool AddBinding (BindingBase *binding)
 添加绑定对象
 
bool AddBinding (Binding *binding)
 添加绑定对象
 
bool AddBinding (SelfBinding *binding)
 添加自绑定对象
 
bool AddBinding (DataBinding *binding)
 添加绑定到DataContext的绑定对象
 
bool RemoveBinding (FieldId propertyId)
 移除指定属性的绑定对象
 
template<typename T , typename TProperty >
bool RemoveBinding (TProperty T::*prop)
 移除指定属性的绑定对象
 
virtual Variant GetTag () const override final
 获取Tag
 
virtual void SetTag (const Variant &tag) override final
 设置Tag
 
- Public 成员函数 继承自 sw::ObservableObject
 ObservableObject ()=default
 默认构造函数
 
 ObservableObject (const ObservableObject &)=delete
 禁用拷贝构造
 
ObservableObjectoperator= (const ObservableObject &)=delete
 禁用拷贝赋值
 
 ObservableObject (ObservableObject &&other) noexcept
 移动构造函数
 
ObservableObjectoperator= (ObservableObject &&other) noexcept
 移动赋值运算符
 
virtual ~ObservableObject ()
 析构时触发对象销毁事件
 
- Public 成员函数 继承自 sw::DynamicObject
 DynamicObject () noexcept
 默认构造函数
 
virtual ~DynamicObject ()
 析构函数
 
bool IsBoxedObject () const noexcept
 判断对象是否为装箱对象
 
bool ReferenceEquals (const DynamicObject &other) const noexcept
 判断与另一DynamicObject是否引用同一对象
 
std::type_index GetType () const noexcept
 获取对象的类型信息
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto DynamicCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if< std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (T **pout=nullptr) -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto IsType (const T **pout=nullptr) const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, bool >::type
 判断对象是否为指定类型
 
template<typename T >
auto DynamicCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, T & >::type
 将对象动态转换为指定类型的引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsDynamicCastable< DynamicObject *, T * >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto DynamicCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsDynamicCastable< DynamicObject *, T * >::value, const T & >::type
 将对象动态转换为指定类型的常量引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
template<typename T >
auto UnsafeCast () const -> typename std::enable_if<!std::is_base_of< DynamicObject, T >::value &&!_IsStaticCastable< DynamicObject *, T * >::value, const T & >::type
 将对象不安全地转换为指定类型的引用
 
- Public 成员函数 继承自 sw::INotifyObjectDead
virtual ~INotifyObjectDead ()=default
 默认析构函数
 
- Public 成员函数 继承自 sw::INotifyPropertyChanged
virtual ~INotifyPropertyChanged ()=default
 默认析构函数
 
- Public 成员函数 继承自 sw::ITag< Variant >
virtual ~ITag ()=default
 默认虚析构函数
 
virtual void SetTag (_OptimalParamType< Variant > tag)=0
 设置Tag
 

静态 Public 成员函数

static MenuItemCreate (const MenuItemDesc &desc)
 创建一个新的菜单项实例
 
static MenuItemCreateRoot (bool isPopup)
 创建一个新的根菜单项实例
 

Public 属性

const ReadOnlyProperty< intId
 菜单项Id
 
const ReadOnlyProperty< HMENUHandle
 菜单项句柄
 
const Property< std::wstring > Text
 菜单项文本
 
const Property< boolEnabled
 菜单项是否可用
 
const Property< boolIsChecked
 菜单项是否选中
 
const Property< HBITMAPBitmap
 菜单项位图
 
const ReadOnlyProperty< boolIsSeparator
 菜单项是否为分隔符
 
const Property< uint64_tTag
 菜单项Tag
 
- Public 属性 继承自 sw::FrameworkElement
const Event< DataContextChangedEventHandlerDataContextChanged
 数据上下文改变时触发该事件
 
const Property< VariantTag
 自定义数据标签,可用于存储任意用户数据
 
const Property< VariantDataContext
 数据上下文
 
const ReadOnlyProperty< DynamicObject * > CurrentDataContext
 当前元素的有效数据上下文
 
- Public 属性 继承自 sw::INotifyObjectDead
const Event< ObjectDeadEventHandlerObjectDead
 对象销毁时触发该事件
 
- Public 属性 继承自 sw::INotifyPropertyChanged
const Event< PropertyChangedEventHandlerPropertyChanged
 当属性值更改时触发的事件
 

Protected 成员函数

virtual void OnTagChanged () override
 当Tag更改时调用此函数
 
- Protected 成员函数 继承自 sw::FrameworkElement
 FrameworkElement ()
 初始化FrameworkElement
 
 FrameworkElement (const FrameworkElement &)=delete
 
 FrameworkElement (FrameworkElement &&)=delete
 
FrameworkElementoperator= (const FrameworkElement &)=delete
 
FrameworkElementoperator= (FrameworkElement &&)=delete
 
virtual void OnCurrentDataContextChanged (DynamicObject *oldDataContext)
 当CurrentDataContext更改时调用此函数
 
- Protected 成员函数 继承自 sw::ObservableObject
virtual PropertyChangedEventHandlerGetPropertyChangedEventDelegate () override final
 获取属性更改事件委托的引用
 
virtual ObjectDeadEventHandlerGetObjectDeadEventDelegate () override final
 获取对象销毁事件委托的引用
 
void RaisePropertyChanged (FieldId propertyId)
 触发属性更改通知事件
 
template<typename T , typename TProperty >
void RaisePropertyChanged (TProperty T::*property)
 触发属性更改通知事件
 

详细描述

菜单项类

成员函数说明

◆ AddChild()

MenuItem * sw::MenuItem::AddChild ( const MenuItemDesc desc)

向当前菜单项添加一个子菜单项

参数
desc子菜单项的描述信息
返回
新增的子菜单项实例

◆ Create()

static MenuItem * sw::MenuItem::Create ( const MenuItemDesc desc)
static

创建一个新的菜单项实例

参数
desc菜单项描述信息

◆ CreateRoot()

static MenuItem * sw::MenuItem::CreateRoot ( bool  isPopup)
static

创建一个新的根菜单项实例

返回
新创建的根菜单项实例

◆ FindChildById()

MenuItem * sw::MenuItem::FindChildById ( int  id)

查找对应ID的子菜单项

参数
id子菜单项ID
返回
指向子菜单项的指针,如果未找到则返回nullptr

◆ FindChildByTag()

MenuItem * sw::MenuItem::FindChildByTag ( uint64_t  tag)

查找对应tag的子菜单项

参数
tag子菜单项tag
返回
指向子菜单项的指针,如果未找到则返回nullptr

◆ GetChildAt()

virtual MenuItem & sw::MenuItem::GetChildAt ( int  index) const
finaloverridevirtual

获取逻辑树中指定索引处的子元素

参数
index子元素索引
异常
std::out_of_range如果索引超出范围

实现了 sw::FrameworkElement.

◆ GetChildCount()

virtual int sw::MenuItem::GetChildCount ( ) const
finaloverridevirtual

获取逻辑树中的子元素数量

返回
子元素数量

实现了 sw::FrameworkElement.

◆ GetParent()

virtual MenuItem * sw::MenuItem::GetParent ( ) const
finaloverridevirtual

获取逻辑树中的父元素

返回
父元素指针,如果没有父元素则返回nullptr

实现了 sw::FrameworkElement.

◆ IndexOf()

int sw::MenuItem::IndexOf ( MenuItem child) const

获取指定子菜单项在当前菜单项中的索引

参数
child子菜单项指针
返回
子菜单项索引,如果未找到则返回-1

◆ InsertChild()

MenuItem * sw::MenuItem::InsertChild ( int  index,
const MenuItemDesc desc 
)

向当前菜单项的指定索引处插入一个子菜单项

参数
index插入位置的子菜单项索引
desc子菜单项的描述信息
返回
新增的子菜单项实例
异常
std::out_of_range如果索引超出范围

◆ OnTagChanged()

virtual void sw::MenuItem::OnTagChanged ( )
overrideprotectedvirtual

当Tag更改时调用此函数

重载 sw::FrameworkElement .

◆ RemoveChild()

bool sw::MenuItem::RemoveChild ( MenuItem child)

移除指定子菜单项

参数
child子菜单项指针
返回
若函数成功则返回true,否则返回false

◆ RemoveChildAt()

bool sw::MenuItem::RemoveChildAt ( int  index)

移除指定索引处的子菜单项

参数
index子菜单项索引
返回
若函数成功则返回true,否则返回false

◆ ResetChildren()

void sw::MenuItem::ResetChildren ( std::initializer_list< MenuItemDesc descs)

重置子菜单项列表

参数
descs新的子菜单项描述信息列表

类成员变量说明

◆ Handle

const ReadOnlyProperty<HMENU> sw::MenuItem::Handle

菜单项句柄

注解
若当前菜单项不是根菜单项,菜单项句柄可能会随着内容的更改而改变, 因此不建议缓存该属性值。

◆ Text

const Property<std::wstring> sw::MenuItem::Text

菜单项文本

注解
若菜单项文本为"-"且没有子项则被视为分隔符,此时IsSeparator属性将返回true。

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