0
WRL(Windowsランタイムテンプレートライブラリ)を使用してWinRT APIにアクセスするWin32アプリケーションがあります。WinRTへのネイティブC++の継承
ネイティブC++からIIterable
を受け取る関数を呼び出すにはどうすればよいですか?私の問題は、IIterable
またはIVector
を実装するものを取得することです。具体的な例として
、私はインクルードでSetDefaultMenuItems
を呼び出すしたいと仮定\ 10.0.14393.0 \ WinRTの\ windows.ui.input.h:
namespace ABI {
namespace Windows {
namespace UI {
namespace Input {
MIDL_INTERFACE("A6B79ECB-6A52-4430-910C-56370A9D6B42")
IRadialControllerConfiguration : public IInspectable
{
public:
virtual HRESULT STDMETHODCALLTYPE SetDefaultMenuItems(
/* [in] */ __RPC__in_opt __FIIterable_1_Windows__CUI__CInput__CRadialControllerSystemMenuItemKind *buttons) = 0;
// ...
};
}
}
}
}
の株式の実装があるように思えません。ネイティブC++の場合はIIterable
またはIVector
です。
'' std :: vector'の上に[VectorView](https://code.msdn.microsoft.com/windowsapps/Windows-Runtime-Component-9b6c6989/sourcecode?fileId=113783&pathId=1623023906)を構築することができます。または標準C++コレクションタイプに一致するその他の適切なコンテナラッパーを使用します。 – IInspectable
IVectorViewを実装するランタイムコンポーネントを作成する必要があります。そのカスタムコンポーネントを使用してIIterableをAPIに渡すようにしてください。 –
'IVectorView'インタフェースはありません。 'VectorView'はクラステンプレートで、' IIterable'インターフェースを実装しています。 'VectorView'へのポインタを' IIterable'インタフェースを期待する関数にすぐに渡すことができます。 COM、C++、またはCOMを実装するためにC++がどのように使用されているかを理解していない可能性が高いため、おそらく完全にここで失われているようです。そしてWRLはあなたが最初に習得しなければならないもう一つの抽象化を加えます。これはうまく終わらないでしょう。最初からやり直して基礎知識を身に付ける必要があります。 – IInspectable