Plantilla de función winrt::capture (C++/WinRT)
Una plantilla de función que llama a una función o método especificados (que llama automáticamente a winrt::check_hresult en ella), captura el puntero de interfaz que se genera desde la función o el método y lo devuelve como parámetro typename T
de plantilla si T
se deriva de Windows::Foundation::IUnknown; de lo contrario, devuelve un winrt::com_ptr. Produce si no se realiza correctamente.
Consulte también la función winrt::com_ptr::capture.
Sintaxis
template <typename T, typename F, typename...Args>
impl::com_ref<T> capture(F function, Args&& ...args);
template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> capture(O* p, M method, Args&& ...args);
template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> capture(com_ptr<O> const& object, M method, Args&& ...args);
Parámetros de plantilla
typename T
Tipo del puntero de interfaz que se genera desde la función o método.
typename F
Tipo de objeto de función, como una función libre o std::function.
typename O
Un tipo de interfaz.
typename M
Tipo de método.
typename Args
Cero o más tipos de argumentos.
Parámetros
function
Objeto de función de tipo F
.
p
Puntero a un objeto de tipo O
.
object
Winrt::com_ptr de tipo O
.
method
Un método (implementado por O
) de tipo M
.
args
Cero o más argumentos de tipo Args
.
Valor devuelto
Devuelve T
si T
se deriva de Windows::Foundation::IUnknown; de lo contrario, devuelve winrt::com_ptr. Produce si no se realiza correctamente.
Observaciones
- La
capture(F function, Args&&...args)
sobrecarga invoca el objeto de función. - La
capture(O* p, M method, Args&& ...args)
sobrecarga invoca el método en el puntero. - La
capture(winrt::com_ptr<O> const& object, M method, Args&&...args)
sobrecarga invoca el método en el objeto .
Todas las sobrecargas pasan (al invocado) los argumentos adicionales que proporcione. Todas las sobrecargas también pasan los dos argumentos adicionales que requieren tales invocaciones, en concreto, un REFIID (el identificador del destino de winrt::com_ptr) y un void** (la dirección de un puntero al destino de winrt::com_ptr).
Requisitos
SDK mínimo admitido: Windows SDK versión 10.0.17134.0 (Windows 10, versión 1803)
Espacio de nombres: winrt
Encabezado: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluido de forma predeterminada)