カスタムインターフェースの型情報
■ このスレッドは過去ログ倉庫に格納されています
0001IDispatch
NGNG静的に持つため、型情報を動的にしか扱えないVisual Basicや
VBScriptなどのインタープリタ型の言語はカスタムインターフェースを
使用できない」という表現で "型情報を静的、動的" の意味が
いまいちよくわかりません。おわかりの方がいらっしゃいましたら
おしえていただけないでしょうか?
0002名無しさん@お腹いっぱい。
NGNG動的:Invoke()経由
0003名無しさん@お腹いっぱい。
NGNG少なくともVB5以降では嘘。
00041
NGNGもう1つだけ質問させてください。
C でオブジェクトのメソッドを呼び出すときに
pIFoo->lpVtbl->Func1(pIFoo);
のようにインターフェースポインタ、vtable のポインタからメソッド名を指定して
呼び出しますが、メソッド名から関数ポインタを明示的に逆参照するにはどうしたらよいでしょうか?
CやC++ではもちろんこんな必要はありませんけど、フリーのインタプリタ型言語のHSPというもので
COMオブジェクトを扱おうと思っているのでこんな面倒なことになっています。
いまのところはvtableのポインタからアドレスを取得して、ここから4バイトごとに各メソッドへの
エントリポイントが格納されているとして使用したいメソッドが何番目かという情報をタイプライブラリを
見てなんとなく判断して呼び出しています。(QueryInterfaceなら1番目だからlpVtbl、
Releaseなら3番目だから lpVtbl + (4 * 2) 見たいな感じ)
通常のAPIでいう GetProcAddress のように、できればメソッド名からこれを逆参照したいのです。
0005名無しさん@お腹いっぱい。
NGNGメソッドを呼ぶためにDispatchインターフェイスがある訳だろ。
すなおにCOMサーバ側でIDispatchを実装すれば良いだろう。
それともカスタムインターフェイスしかサポートしていない
出来合いのCOMサーバを使わなければならないという話なの?
0006>5
NGNGどうしてIDispatchを実装する必要があるんだ?笑い
0007名無しさん@お腹いっぱい。
NGNG????
良く読めよ。5は4へのレスであって、この時点ではVBは
関係ないぞ。
0008名無しさん@お腹いっぱい。
NGNG00091です
NGNGまさにその通りなんです。
vtableとメソッド名が関連付けられないんです。
C++だと2重間接参照とthisポインタはコンパイラが
処理してくれるんですよね。
0010名無しさん@お腹いっぱい。
NGNG0011名無しさん@お腹いっぱい。
NGNG>[名]《略式》
>1(若い女性の)社交界デビュー.
>2 同性愛者であることの公表.
ってことは 1 は同性愛者か?
0012名無しさん@お腹いっぱい。
NGNG■ このスレッドは過去ログ倉庫に格納されています