可用于为自己的事件声明自定义委托类型的类型。 delegate supports any number of parameters, and they are not limited to Windows Runtime types.
The delegate type has no ABI (it has no interface for use across application binaries), so its use case is when you're both authoring and consuming an event within the same project. 有关该方案的更多详细信息,请参阅 项目中的参数化委托、简单信号和回调。
有关处理事件和代码示例的详细信息,请参阅 在 C++/WinRT 中使用委托处理事件。
Syntax
template <typename... T>
struct delegate : Windows::Foundation::IUnknown
Template parameters
typename... T
一个可变模板参数包,其中包含调用委托时传递的参数的类型。
Requirements
支持的最低 SDK: Windows SDK 版本 10.0.17134.0(Windows 10 版本 1803)
Namespace: winrt
Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (included by default)
Constructors
Constructor | Description |
---|---|
delegate::delegate constructor | Initializes a new instance of the delegate struct from the input data. |
Member operators
Operator | Description |
---|---|
delegate::operator() (函数调用运算符) | Invokes the delegate represented by the delegate object with the provided arguments. |
delegate::delegate constructor
Initializes a new instance of the delegate struct from the input data.
Syntax
delegate(std::nullptr_t = nullptr) noexcept; // (1)
template <typename L>
delegate(L lHandler); // (2)
template <typename F>
delegate(F* fHandler); // (3)
template <typename O, typename M>
delegate(O* object, M method); // (4)
template <typename O, typename M>
delegate(winrt::com_ptr<O>&& object, M method); // (5)
template <typename O, typename M>
delegate(winrt::weak_ref<O>&& object, M method); // (6)
template <typename O, typename M>
delegate(winrt::weak_ref<O>&& object, L lHandler); // (7)
template <typename O, typename M>
delegate(std::shared_ptr<O>&& object, M method); // (8)
template <typename O, typename M>
delegate(std::weak_ptr<O>&& object, M method); // (9)
template <typename O, typename M>
delegate(std::weak_ptr<O>&& object, L lHandler); // (10)
Template parameters
typename L
lambda 类型,或者更普遍地支持函数调用语法的任何类型,例如 std::function
。
typename F
免费函数类型。
typename O
对象类型。
typename M
指针到成员函数类型。
Parameters
lHandler
lambda 对象(或更通常)支持函数调用语法的对象,例如将处理事件的一个 std::function
对象。
fHandler
一个指针到自由函数,用于处理事件。
object
一个对象,其成员函数之一将处理该事件。
根据重载,此对象可能由原始指针或智能指针表示。
method
一个指针到成员函数,用于处理事件。
Remarks
默认构造函数 (1) 构造空委托。
构造函数 (2) 构造一个委托,该委托使用委托参数调用 lambda。
构造函数 (3) 构造一个委托,该委托使用委托参数调用函数。
构造函数 (4) 构造一个委托,该委托使用委托参数调用指向对象的方法。
构造函数 (5) 构造一个委托,该委托使用委托参数调用引用的对象的方法。
构造函数 (6) 构造尝试解析为强引用的 weak_ref
委托。
如果成功,则它使用委托参数调用对象的方法;否则,它不执行任何作。
构造函数 (7) 构造尝试解析为强引用的 weak_ref
委托。
如果成功,则调用具有委托参数的 lambda;否则,它不执行任何作。
需要 C++/WinRT 版本 2.0.240111.5。
构造函数 (8) 构造一个委托,该委托使用委托参数调用共享对象的方法。 需要 C++/WinRT 版本 2.0.240111.5。
构造函数 (9) 构造一个委托,该委托尝试解析 weak_ptr
为共享指针。
如果成功,则它使用委托参数调用共享对象的方法;否则,它不执行任何作。
需要 C++/WinRT 版本 2.0.240111.5。
构造函数 (10) 构造一个委托,该委托尝试解析 weak_ptr
为共享指针。
如果成功,则调用具有委托参数的 lambda;否则,它不执行任何作。
需要 C++/WinRT 版本 2.0.240111.5。
delegate::operator() (函数调用运算符)
Invokes the delegate represented by the delegate object with the provided arguments.
Syntax
void operator()(T const&... args) const
See also
- winrt namespace
- 在 C++/WinRT 中的作者事件
- 在 C++/WinRT 中使用委托处理事件
- winrt::event 结构模板