SimpleWindow
载入中...
搜索中...
未找到
Menu.h
1
#pragma once
2
3
#include "Alignment.h"
4
#include "Event.h"
5
#include "MenuItem.h"
6
#include "Point.h"
7
8
namespace
sw
9
{
10
class
MenuBase;
// 向前声明
11
15
class
MenuItemClickedEventArgs
:
public
EventArgs
16
{
17
public
:
19
MenuBase
*
menu
;
20
};
21
25
using
MenuItemClickedEventHandler
=
26
EventHandler<MenuItem, MenuItemClickedEventArgs>
;
27
31
class
MenuBase
32
{
33
private
:
37
std::unique_ptr<MenuItem> _root;
38
42
MenuItemClickedEventHandler
_itemClicked;
43
44
public
:
48
const
Event<MenuItemClickedEventHandler>
ItemClicked
;
49
53
const
ReadOnlyProperty<MenuItem *>
Root
;
54
58
const
ReadOnlyProperty<HMENU>
Handle
;
59
60
protected
:
64
MenuBase
(
MenuItem
*
root
);
65
66
public
:
70
virtual
~MenuBase
() =
default
;
71
72
// 删除拷贝构造函数
73
MenuBase
(
const
MenuBase
&) =
delete
;
74
75
// 删除移动构造函数
76
MenuBase
(
MenuBase
&&) =
delete
;
77
78
// 删除拷贝赋值运算符
79
MenuBase
&operator=(
const
MenuBase
&) =
delete
;
80
81
// 删除移动赋值运算符
82
MenuBase
&operator=(
MenuBase
&&) =
delete
;
83
84
public
:
90
bool
RaiseClickedEvent
(
int
menuItemId
);
91
97
MenuItem
*
FindMenuItemById
(
int
id
);
98
104
MenuItem
*
FindMenuItemByTag
(
uint64_t
tag);
105
111
MenuItem
*
FindMenuItemByText
(
const
std::wstring &text);
112
};
113
117
class
Menu
:
public
MenuBase
118
{
119
public
:
123
Menu
();
124
129
Menu
(std::initializer_list<MenuItemDesc>
items
);
130
};
131
135
class
ContextMenu
:
public
MenuBase
136
{
137
public
:
141
ContextMenu
();
142
147
ContextMenu
(std::initializer_list<MenuItemDesc>
items
);
148
157
bool
Show
(
158
HWND
hwnd,
const
Point
&
point
,
159
sw::HorizontalAlignment
horz
=
sw::HorizontalAlignment::Left
,
160
sw::VerticalAlignment
vert
=
sw::VerticalAlignment::Top
);
161
};
162
}
sw::ContextMenu
上下文菜单
Definition
Menu.h:136
sw::ContextMenu::ContextMenu
ContextMenu()
初始化上下文菜单
sw::ContextMenu::Show
bool Show(HWND hwnd, const Point &point, sw::HorizontalAlignment horz=sw::HorizontalAlignment::Left, sw::VerticalAlignment vert=sw::VerticalAlignment::Top)
在指定位置显示上下文菜单
sw::ContextMenu::ContextMenu
ContextMenu(std::initializer_list< MenuItemDesc > items)
初始化上下文菜单并设置菜单项
sw::IValueConverter
值转换器接口
Definition
IValueConverter.h:14
sw::MenuBase
菜单类型的基类
Definition
Menu.h:32
sw::MenuBase::ItemClicked
const Event< MenuItemClickedEventHandler > ItemClicked
菜单项被点击事件
Definition
Menu.h:48
sw::MenuBase::FindMenuItemByText
MenuItem * FindMenuItemByText(const std::wstring &text)
查找对应文本的菜单项
sw::MenuBase::MenuBase
MenuBase(MenuItem *root)
创建菜单实例
sw::MenuBase::RaiseClickedEvent
bool RaiseClickedEvent(int menuItemId)
触发菜单项点击事件
sw::MenuBase::Root
const ReadOnlyProperty< MenuItem * > Root
根菜单项
Definition
Menu.h:53
sw::MenuBase::FindMenuItemByTag
MenuItem * FindMenuItemByTag(uint64_t tag)
查找对应tag的菜单项
sw::MenuBase::FindMenuItemById
MenuItem * FindMenuItemById(int id)
查找对应ID的菜单项
sw::MenuBase::~MenuBase
virtual ~MenuBase()=default
析构函数
sw::MenuBase::Handle
const ReadOnlyProperty< HMENU > Handle
菜单句柄
Definition
Menu.h:58
sw::MenuItemClickedEventArgs
菜单被点击事件参数
Definition
Menu.h:16
sw::MenuItemClickedEventArgs::menu
MenuBase * menu
菜单项所在的菜单
Definition
Menu.h:19
sw::MenuItem
菜单项类
Definition
MenuItem.h:70
sw::Menu
窗口菜单
Definition
Menu.h:118
sw::Menu::Menu
Menu()
初始化窗口菜单
sw::Menu::Menu
Menu(std::initializer_list< MenuItemDesc > items)
初始化窗口菜单并设置菜单项
sw
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition
Alignment.h:4
sw::VerticalAlignment
VerticalAlignment
垂直对齐方式
Definition
Alignment.h:18
sw::VerticalAlignment::Top
@ Top
顶部对齐
sw::HorizontalAlignment
HorizontalAlignment
水平对齐方式
Definition
Alignment.h:8
sw::HorizontalAlignment::Left
@ Left
左对齐
sw::EventArgs
事件参数结构体
Definition
Event.h:294
sw::Point
表示相对于左上角的点坐标
Definition
Point.h:15
sw
inc
Menu.h
制作者
1.9.8