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)