SimpleWindow
载入中...
搜索中...
未找到
MenuItem.h
1
#pragma once
2
3
#include "Delegate.h"
4
#include "ITag.h"
5
#include <Windows.h>
6
#include <initializer_list>
7
#include <memory>
8
#include <string>
9
#include <vector>
10
11
namespace
sw
12
{
13
class
MenuItem;
// 向前声明
14
18
using
MenuItemCommand = Action<MenuItem &>;
19
23
class
MenuItem
:
public
ITag
24
{
25
public
:
29
uint64_t
tag
;
30
34
std::wstring
text
;
35
39
MenuItemCommand
command
;
40
44
std::vector<std::shared_ptr<MenuItem>>
subItems
{};
45
46
public
:
51
MenuItem
(
const
std::wstring &
text
);
52
58
MenuItem
(
const
std::wstring &
text
,
const
MenuItemCommand
&
command
);
59
65
MenuItem
(
const
std::wstring &
text
, std::initializer_list<MenuItem>
subItems
);
66
71
MenuItem
(uint64_t
tag
,
const
std::wstring &
text
);
72
78
MenuItem
(uint64_t
tag
,
const
std::wstring &
text
,
const
MenuItemCommand
&
command
);
79
86
template
<
typename
T>
87
MenuItem
(
const
std::wstring &
text
, T &obj,
void
(T::*handler)(
MenuItem
&))
88
:
MenuItem
(0,
text
, obj, handler)
89
{
90
}
91
98
template
<
typename
T>
99
MenuItem
(uint64_t
tag
,
const
std::wstring &
text
, T &obj,
void
(T::*handler)(
MenuItem
&))
100
:
MenuItem
(
tag
,
text
,
MenuItemCommand
(obj, handler))
101
{
102
}
103
104
public
:
108
bool
IsSeparator
()
const
;
109
113
void
CallCommand
();
114
118
virtual
uint64_t
GetTag
()
const override
;
119
123
virtual
void
SetTag
(uint64_t
tag
)
override
;
124
};
125
}
sw::Delegate
Definition
Delegate.h:21
sw::ITag
Tag接口
Definition
ITag.h:11
sw::MenuItem
菜单项
Definition
MenuItem.h:24
sw::MenuItem::text
std::wstring text
菜单项的文本,当值为“-”时表示当前项为分隔条
Definition
MenuItem.h:34
sw::MenuItem::IsSeparator
bool IsSeparator() const
获取一个值,表示当前菜单项是否为分隔条
sw::MenuItem::GetTag
virtual uint64_t GetTag() const override
获取Tag
sw::MenuItem::CallCommand
void CallCommand()
调用command
sw::MenuItem::MenuItem
MenuItem(uint64_t tag, const std::wstring &text)
构造一个MenuItem,并设置tag及文本
sw::MenuItem::command
MenuItemCommand command
菜单项被单击时调用的函数
Definition
MenuItem.h:39
sw::MenuItem::MenuItem
MenuItem(const std::wstring &text)
构造一个MenuItem,并设置文本
sw::MenuItem::MenuItem
MenuItem(uint64_t tag, const std::wstring &text, const MenuItemCommand &command)
构造一个MenuItem,并设置tag及回调函数
sw::MenuItem::tag
uint64_t tag
储存用户自定义信息
Definition
MenuItem.h:29
sw::MenuItem::MenuItem
MenuItem(uint64_t tag, const std::wstring &text, T &obj, void(T::*handler)(MenuItem &))
构造一个MenuItem,设置成员函数为回调函数
Definition
MenuItem.h:99
sw::MenuItem::MenuItem
MenuItem(const std::wstring &text, T &obj, void(T::*handler)(MenuItem &))
构造一个MenuItem,设置成员函数为回调函数
Definition
MenuItem.h:87
sw::MenuItem::SetTag
virtual void SetTag(uint64_t tag) override
设置Tag
sw::MenuItem::subItems
std::vector< std::shared_ptr< MenuItem > > subItems
子项
Definition
MenuItem.h:44
sw::MenuItem::MenuItem
MenuItem(const std::wstring &text, std::initializer_list< MenuItem > subItems)
构造一个MenuItem,并设置其子项
sw::MenuItem::MenuItem
MenuItem(const std::wstring &text, const MenuItemCommand &command)
构造一个MenuItem,并设置其回调函数
sw
inc
MenuItem.h
制作者
1.9.8