- PR -

VB6.0のDLLからの戻り値の取得方法

1
投稿者投稿内容
pokkam
会議室デビュー日: 2003/05/27
投稿数: 7
投稿日時: 2004-11-29 14:49
VC++を最近始めた新米です。
諸先輩方のコードを見ながら、とあるツールを作成しています。

VB6.0で作成されたDLLのある関数をVC++6.0から呼び出す際、
aaaMethod(struct _Collection * * _arg1) で呼び出し、
VC側でCollection型として受け取るように、となっています。

Collection の中身は、
フィールドを持つクラス error が10件格納されています。

自分は以下のようにして呼び出しています。

_SampleClassPtr smp;
hResult = smp.CreateInstance(__uuidof(SampleClass));
if (FAILED(hResult)) {
return;
}
CComPtr<VBA::_Collection> pColObj;
smp->aaaMethod((_Collection**)&pColObj);

long lval = 0;
lval = pColObj->Count();

一応、pColObj->Count() で取得した lval の値は、格納されているクラス数と
同数の値(10)を返すので、VC側でCollection 型として受け取れているように
思えるのですが、この後、pColObj の中に格納されている error クラスを
取り出そうとしているのですが、どうやってもうまくいきません。
どなたか、解決方法を教えて頂けないでしょうか?
よろしくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)