Compartilhar via


Modelo de função winrt::capture (C++/WinRT)

Um modelo de função que chama uma função ou método especificado (chamando automaticamente winrt::check_hresult nele), captura o ponteiro de interface que é saída da função ou método e retorna-o como o parâmetro typename T de modelo se T deriva de Windows::Foundation::IUnknown, caso contrário, retorna um winrt::com_ptr. Lança se não tiver êxito.

Consulte também a função winrt::com_ptr::capture.

Syntax

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 modelo

typename T O tipo do ponteiro de interface que é saída da função ou método.

typename F Um tipo de objeto de função, como uma função livre, ou std::function.

typename O Um tipo de interface.

typename M Um tipo de método.

typename Args Zero ou mais tipos de argumento.

Parâmetros

function Um objeto de função do tipo F.

p Um ponteiro para um objeto do tipo O.

object Um winrt::com_ptr do tipo O.

method Um método (implementado por O) do tipo M.

args Zero ou mais argumentos do tipo Args.

Valor retornado

Retorna T se T deriva de Windows::Foundation::IUnknown, caso contrário, retorna winrt::com_ptr. Lança se não tiver êxito.

Comentários

  • A capture(F function, Args&&...args) sobrecarga invoca o objeto de função.
  • A capture(O* p, M method, Args&& ...args) sobrecarga invoca o método no ponteiro.
  • A capture(winrt::com_ptr<O> const& object, M method, Args&&...args) sobrecarga invoca o método no objeto.

Todas as sobrecargas passam (para a invocação) quaisquer argumentos adicionais que você fornecer. Todas as sobrecargas também passam pelos dois argumentos adicionais que essas invocações exigem, especificamente, um REFIID (a ID do destino do winrt::com_ptr) e um void** (o endereço de um ponteiro para o destino do winrt::com_ptr).

Requisitos

SDK com suporte mínimo: Windows SDK versão 10.0.17134.0 (Windows 10, versão 1803)

Namespace: winrt

Cabeçalho: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluído por padrão)

Confira também