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