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.

objectWinrt::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)

Consulte también