20 template <
typename TOwner,
typename TDelegate>
35 TDelegate &(*_accessor)(
TOwner *);
58 template <TDelegate (TOwner::*accessor)()>
69 template <TDelegate (TOwner::*accessor)() const>
80 template <TDelegate TOwner::*field>
92 template <
typename TDelegate>
102 TDelegate &(*_accessor)();
128 template <
typename TRet,
typename... Args>
147 template <
typename TOwner>
154 _accessor =
reinterpret_cast<void *
>(
initializer._accessor);
170 _accessor =
reinterpret_cast<void *
>(
initializer._accessor);
181 template <
typename T>
183 ->
typename std::enable_if<_DelegateCanAddSubtract<TDelegate, T>::value>::type
185 this->GetDelegate() += std::forward<T>(
handler);
192 template <
typename T>
194 ->
typename std::enable_if<_DelegateCanAddSubtract<TDelegate, T>::value>::type
196 this->GetDelegate() -= std::forward<T>(
handler);
203 template <
typename TOwner>
221 static constexpr std::ptrdiff_t _STATICOFFSET =
222 (std::numeric_limits<std::ptrdiff_t>::max)();
227 std::ptrdiff_t _offset;
244 return _offset == _STATICOFFSET;
251 void SetOwner(
void *owner)
noexcept
253 if (owner ==
nullptr) {
254 _offset = _STATICOFFSET;
256 _offset =
reinterpret_cast<uint8_t *
>(owner) -
reinterpret_cast<uint8_t *
>(
this);
263 void *GetOwner() const noexcept
268 return const_cast<uint8_t *
>(
reinterpret_cast<const uint8_t *
>(
this)) + _offset;
275 TDelegate &GetDelegate()
const
277 return _extractor(GetOwner(), _accessor);
291 template <
typename TSender,
typename TEventArgs = EventArgs>
委托类,类似于C::中的委托,支持存储和调用任意可调用对象
Definition Delegate.h:391
auto operator+=(T &&handler) const -> typename std::enable_if< _DelegateCanAddSubtract< TDelegate, T >::value >::type
添加事件处理程序
Definition Event.h:182
Event(const StaticEventInitializer< TDelegate > &initializer)
构造静态事件
Definition Event.h:165
auto operator-=(T &&handler) const -> typename std::enable_if< _DelegateCanAddSubtract< TDelegate, T >::value >::type
移除事件处理程序
Definition Event.h:193
Event(const MemberEventInitializer< TOwner, TDelegate > &initializer)
构造成员事件
Definition Event.h:148
static StaticEventInitializer< TDelegate > Init()
初始化静态事件
Definition Event.h:212
static MemberEventInitializer< TOwner, TDelegate > Init(TOwner *owner)
初始化成员事件
Definition Event.h:204
值转换器接口
Definition IValueConverter.h:14
成员事件初始化器
Definition Event.h:22
MemberEventInitializer & Delegate(TDelegate &(*accessor)(TOwner *))
设置委托访问器
Definition Event.h:49
MemberEventInitializer(TOwner *owner)
构造成员事件初始化器
Definition Event.h:41
MemberEventInitializer & Delegate()
使用成员函数获取委托
Definition Event.h:59
静态事件初始化器
Definition Event.h:94
StaticEventInitializer()
构造静态事件初始化器
Definition Event.h:108
StaticEventInitializer & Delegate(TDelegate &(*accessor)())
设置委托访问器
Definition Event.h:116
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4
事件参数结构体
Definition Event.h:286