2008-08-20

ATLを使ってCOMコードコンポーネントを作る 4

ATLを使ってCOMコードコンポーネントを作る 3 の続き

前回、一応実装までの手順を書きましたが、今回は列挙型の定義手順を説明します。


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って資料がほんとなくて困ります。