Windows Runtime Cpp ランタイムオブジェクト生成 新しいページはコチラ
提供: yonewiki
(→Runtimeファクトリーの生成 RoGetActivationFactory) |
(→Runtimeファクトリーの生成 RoGetActivationFactory) |
||
1行: | 1行: | ||
+ | [[Windows Runtime Cpp]]へ戻る | ||
+ | |||
+ | |||
== '''概要''' == | == '''概要''' == | ||
レジストリからDLLを検索し、必要なランタイムオブジェクトを生成するような仕組みによって生成されます。アクティベーションって言います。あるいはファクトリー呼ばれるものから生成するオブジェクトもあります。 | レジストリからDLLを検索し、必要なランタイムオブジェクトを生成するような仕組みによって生成されます。アクティベーションって言います。あるいはファクトリー呼ばれるものから生成するオブジェクトもあります。 | ||
141行: | 144行: | ||
== '''Runtimeファクトリーの生成 RoGetActivationFactory''' == | == '''Runtimeファクトリーの生成 RoGetActivationFactory''' == | ||
− | + | ファクトリーは具体的な機能を持ったランタイムのオブジェクトの生成に使う手法です。前項のオブジェクトが基本で、本項のオブジェクトが実用という感じです。ここではURIに関するオブジェクトを生成するファクトリーを作ってみます。さきほどのサンプルに追加する形で、ファクトリーによるオブジェクト生成を見てみます。プログラム自体は何の役にも立ちません。あしからず。ランタイムオブジェクトがあって、オブジェクトにはメソッドがあり、クラスのような働きをしてくれます。生成したIUriRuntimeClassFactoryオブジェクトにURI設定したオブジェクトを生成して、IUriRuntimeClassを生成します。 | |
*'''RoGetActivationFactory'''(生成するオブジェクトクラス名,ランタイムオブジェクトのIIDインターフェースID,ランタイムオブジェクト型のアドレス変数のアドレス変数) | *'''RoGetActivationFactory'''(生成するオブジェクトクラス名,ランタイムオブジェクトのIIDインターフェースID,ランタイムオブジェクト型のアドレス変数のアドレス変数) | ||
− | :第一引数: | + | :第一引数:生成するオブジェクトクラス名をHSTRING変数で指定します。サンプルでは85行目に使われています。HSTRING_StrURIClassNameのHSTRING型変数を指定しています。 |
− | :第二引数:ランタイムオブジェクトのIIDで、通常はランタイムオブジェクトの型名を使って __iidof() | + | :第二引数:ランタイムオブジェクトのIIDで、通常はランタイムオブジェクトの型名を使って __iidof()関数で取得します。__iidof(IUriRuntimeClassFactory)として指定しています。 |
− | :第二引数: | + | :第二引数:ランタイムオブジェクト変数のアドレス変数のアドレス変数を(void**)型で指定します。voidですので、型指定無しのアドレス型ですね。 (void**)&pIUriRuntimeClassFactoryObjとして指定しています。 |
<syntaxhighlight lang="cpp" line start="1"> | <syntaxhighlight lang="cpp" line start="1"> | ||
331行: | 334行: | ||
続行するには何かキーを押してください . . . | 続行するには何かキーを押してください . . . | ||
+ | |||
+ | |||
+ | と、こんな感じで使います。ランタイムオブジェクトはこれだけではないので、IxxRuntimeClassFactoryやIxxRuntimeClassといったランタイムオブジェクトはいくつかありますので、それらについては少しづつ紹介していかねばらないのかなぁとは思っています。まずは使い方の一例を示しました。IxxRuntimeというようなオブジェクトだけに限らず、IDisplayPropertiesStaticsのようなオブジェクトもあります。 | ||
+ | |||
+ | |||
+ | オブジェクト生成後は | ||
+ | *pIUriRuntimeClassObj->Release(); | ||
+ | *pIUriRuntimeClassFactoryObj->Release(); | ||
+ | *pIApplicationObj->Release(); | ||
+ | のような、それぞれのオブジェクトに準備されているRelease()メソッドを実行して解放してあげる必要があります。 | ||
+ | |||
+ | |||
+ | [[Windows Runtime Cpp]]へ戻る |