winrt::capture 関数テンプレート (C++/WinRT)
指定した関数またはメソッド (winrt::check_hresult を自動的に呼び出す) を呼び出す関数テンプレートは、関数またはメソッドから出力されるインターフェイス ポインターをキャプチャし、Windows::Foundation::IUnknown から派生した場合はテンプレート パラメーターtypename T
として返します。それ以外の場合T
は winrt::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 個以上の引数の型。
パラメーター
function
型 F
の関数オブジェクト。
p
型 O
のオブジェクトへのポインター。
object
winrt::com_ptr 型O
です。
method
型M
のメソッド (実装) O
です。
args
型 Args
の 0 個以上の引数。
戻り値
T
Windows::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 (既定で含まれます)