前回、一応実装までの手順を書きましたが、今回は列挙型の定義手順を説明します。
COMとして公開する列挙型はIDLファイルに以下のような記述を追加します。
[
v1_enum,
helpstring ("ロジックオプション"),
]
typedef enum SampleEnum
{
[helpstring("値1")] ENUM_VALUE1 = 0x00000000,
[helpstring("値2")] ENUM_VALUE2 = 0x00000001,
[helpstring("値3")] ENUM_VALUE3 = 0x00000002,
[helpstring("値4")] ENUM_VALUE4 = 0x00000003,
[helpstring("値5")] ENUM_VALUE5 = 0x00000004
} SampleEnum;
記述方法はいくつかあるようですが、このような記述をするとVBから想定通りに使えました。
typedef enum の行の SampleEnum は無くてもコンパイルは通りますがVBからの参照がおかしくなります。
引数にインターフェースや列挙型を使用するには
[id(1), helpstring("引数に列挙型などを使用する場合")] HRESULT SampleMethod([in] ITest* pTest, [in] SampleEnum enumValue, [out,retval] VARIANT_BOOL* result);
のように記述します。
一応続く…
1 件のコメント:
大変ためになりました。msのidlって資料がほんとなくて困ります。
コメントを投稿