2009年4月2日木曜日

COMでcallbackを使いたい場合

VC++でのお話。C#とかは知らん。

簡単に概要だけ書いておく。サンプルは暇な時に適当に。

COMってのはdllなわけだが実装が完全に内部に閉じているため、
callback先のポインタをわたして「ほれ、終わったらここに通知しな」とはいかない。
access violationになる。(と思う)

で、callbackを実現するためにConnection Pointを作ってやればよい。
Connection Pointはdll内部でcallbackさせようと呼び出したメソッドをdllのイベント的なものとして、システムに通知してくれるもの。(うーん適当すぎ、まぁいいや)

で、このイベントを拾った時にどのメソッドを呼ぶのかをdllを使う側で定義してやればよい。
もち、interfaceは合わせておく必要がある。

具体的にどうするかはまた次回に。

0 件のコメント:

コメントを投稿