2008-08-24

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

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

続けるつもりは無かったのですが、VARIANT_BOOLの値の返し方を書いていなかったのでさらに続けます
と言っても非常に簡単な話しかしませんが…


こんなIDL定義をした場合
[id(1), helpstring("VARIANT_BOOLを返す")] HRESULT SampleMethod([out,retval] VARIANT_BOOL* result);

実装は次のように記述します。(今、私はラッパーとして作っているので、WrappedMethod() は bool を返す前提で話を進めます)
STDMETHODIMP CTest::SampleMethod([out,retval] VARIANT_BOOL* result)
{
result* = WrappedMethod() ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
}

そう、当たり前と言えば当たり前ですが、boolとVARIANT_BOOLは異なるのでちゃんと変換しなきゃダメなんですね。
変換用の関数とか用意されてそうな気もしますが調べてません…

0 件のコメント: