winrt::capture 関数テンプレート (C++/WinRT)

指定した関数またはメソッド (winrt::check_hresult を自動的に呼び出す) を呼び出す関数テンプレートは、関数またはメソッドから出力されるインターフェイス ポインターをキャプチャし、Windows::Foundation::IUnknown から派生した場合はテンプレート パラメーターtypename Tとして返します。それ以外の場合Twinrt::com_ptr を返します。 成功しなかった場合はスローされます。

winrt::com_ptr::capture 関数も参照してください。

構文

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);

テンプレート パラメーター

typename T 関数またはメソッドから出力されるインターフェイス ポインターの型。

typename F free 関数や std::function などの関数オブジェクト型。

typename O インターフェイスの種類。

typename M メソッドの型。

typename Args 0 個以上の引数の型。

パラメーター

functionFの関数オブジェクト。

pOのオブジェクトへのポインター。

objectwinrt::com_ptrOです。

methodMのメソッド (実装) Oです。

argsArgsの 0 個以上の引数。

戻り値

TWindows::Foundation::IUnknown から派生した場合Tは返されます。それ以外の場合は winrt::com_ptr を返します。 成功しなかった場合はスローされます。

注釈

  • オーバーロードによって capture(F function, Args&&...args) 関数オブジェクトが呼び出されます。
  • オーバーロードは capture(O* p, M method, Args&& ...args) 、ポインターでメソッドを呼び出します。
  • オーバーロードは capture(winrt::com_ptr<O> const& object, M method, Args&&...args) 、オブジェクトのメソッドを呼び出します。

すべてのオーバーロードは、指定した追加の引数を (呼び出し側に) 渡します。 また、すべてのオーバーロードは、このような呼び出しで必要な 2 つの追加引数 (具体的には、 REFIID ( winrt::com_ptr のターゲットの ID)、 void** ( winrt::com_ptr のターゲットへのポインターのアドレス) を渡します。

必要条件

サポートされている最小 SDK: Windows SDK バージョン 10.0.17134.0 (Windows 10、バージョン 1803)

名前空間: winrt

ヘッダー: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (既定で含まれます)

こちらもご覧ください