28 #ifndef YSL_INC_UI_ycontrol_h_
29 #define YSL_INC_UI_ycontrol_h_ 1
32 #include YFM_YSLib_UI_YWidget
33 #include YFM_YSLib_UI_YWidgetEvent
46 using namespace Drawing;
64 template<
typename... _tParams>
70 const VisualEvent&
id)
72 EventMapping::ItemType&
73 GetItemRef(const VisualEvent&, EventMapping::
MappedType(&)()) override;
90 return wgt.GetController().IsEnabled();
105 wgt.GetController().SetEnabled(b);
117 Enable(IWidget&,
bool =
true);
130 template<VisualEvent _vID>
132 FetchEvent(IWidget&
wgt)
134 return FetchEvent<_vID>(wgt.GetController());
142 template<VisualEvent _vID,
typename _tEventArgs>
149 HandlerType::TupleType>::type>>::value,
150 "Invalid event argument type found @ CallEvent;");
154 return DoEvent<HandlerType>(wgt.GetController(), _vID, std::move(e));
171 template<VisualEvent _vID,
class _tEventArgs>
175 CallEvent<_vID>(e.GetSender(), e);
182 template<
class _tEventArgs>
299 std::function<IWidget*(const KeyInput&)> BoundControlPtr;
321 Control(
const Control&);
YF_API void OnKeyHeld(KeyEventArgs &&)
处理键接触保持事件。
YF_API void OnKey_Bound_TouchDown(KeyEventArgs &&)
处理按键事件:按键-指针设备接触开始。
Controller(bool b, _tParams &&...args)
GEventPointerWrapper< UIEventArgs && > MappedType
映射项类型。
typename remove_reference< _type >::type remove_reference_t
yconstfn const string _tParams && args
#define DefExtendEventMap(_n, _b)
定义扩展事件映射类。
GIHEvent< UIEventArgs && > ItemType
EventT(typename EventTypeMapping< _vID >::HandlerType)&FetchEvent(IWidget &wgt)
取部件事件。
YF_API void OnTouchHeld_DraggingRaw(CursorEventArgs &&, IWidget &)
处理屏幕接触移动事件:拖放指定部件。
YF_API bool Enable(IWidget &, bool=true)
设置部件可用性,且当可用性改变时无效化部件区域。
YF_API void OnTouchHeld_Dragging(CursorEventArgs &&)
处理屏幕接触移动事件:拖放按下部件。
#define yforward(_expr)
根据参数类型使用 std::forward 传递对应参数。
#define DefGetter(_q, _t, _n,...)
void SetEnabledOf(IWidget &wgt, bool b)
设置部件可用性。
map< VisualEvent, MappedType > MapType
映射表类型。
YF_API void OnTouchHeld(CursorEventArgs &&)
处理屏幕接触保持事件。
PDefH(void, Activate, Console &console, Drawing::Color fc=Drawing::ColorSpace::White) ImplExpr(Activate(console
激活:使用指定屏幕、有效性、前景色和默认背景色。
CursorState
指针设备光标相对于控件的状态。
#define ynothrow
YSLib 无异常抛出保证:若支持 noexcept 关键字, 指定特定的 noexcept 异常规范。
YF_API void OnTouchDown_RequestToFrontFocused(CursorEventArgs &&)
处理屏幕接触开始事件:使用一般接触策略。
EventMapping::MapType VisualEventMap
std::function< void(PaintEventArgs &&)> HBrush
画刷回调函数。
void OnEvent_Call(_tEventArgs &&e)
处理事件:直接转发至发送者。
void OnEvent_StopRouting(_tEventArgs &&e)
bool IsEnabled(const IWidget &wgt)
判断部件是否为可用的控件。
#define DefClone(_q, _t)
动态复制。
EventMapping::MapType EventMap
事件映射表。
const IWidget &wgt ImplRet(wgt.GetView().IsVisible()) bool YF_API Contains(const IWidget &
判断点是否在部件的可视区域内。
YF_API void OnKey_Bound_TouchUp(KeyEventArgs &&)
处理按键事件:按键-指针设备接触结束。
Selected const shared_ptr< ListType > const pair< Color, Color > & DefDeMoveCtor(TextList) DefPredMem(const ynothrow
YF_API void OnKey_Bound_Click(KeyEventArgs &&)
处理按键事件:按键-指针设备按下。
size_t CallEvent(IWidget &wgt, _tEventArgs &&e)
调用部件事件,并忽略 BadEvent 异常。
std::bitset< KeyBitsetWidth > KeyInput
按键并行位宽。
YF_API void OnUIEvent_Invalidate(UIEventArgs &&)
处理用户界面事件:无效化发送者。