ActiveXにメソッドを追加するには?

解決


なべ  2005-05-17 11:42:26  No: 57424  IP: 192.*.*.*

Visual Studio 2002のVC++でActiveXを作成し、VBから利用しようとしています。
コントロールにメソッドを追加したのですが、VBから参照可能になりません。
idlファイルに追加したメソッドの定義が追加されていないので、
このためだと思うのですが、正しい手順が判らず困っています。

〜〜〜今の手順〜〜〜
① [ファイル]→[新規作成]→[プロジェクト]→MFC ActiveXコントロール でXXXプロジェクトを作成
② クラスビューを表示し、ツリービューのCXXXCtrlクラスを右クリックしてメソッドを追加
〜〜〜〜〜〜〜〜〜〜

MSDNライブラリの以下の説明に従っているつもりなのですが...。

http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_activex_controls.3a_.adding_custom_methods_to_an_activex_control.asp?frame=true

右クリックのショートカットメニューの[追加]からは、
[メソッドの追加]ではなく[関数の追加]と表示されます。
また、[関数の追加]を選択した時に表示されるダイアログも
「メソッド追加ウィザード」ではなく「メンバ関数の追加ウィザード」ですし、
内容も微妙に違うようです(「内部名」というテキストボックスはない)。

ちなみに、VC++6.0でプロジェクトをMFC ActiveX Control Wizardで作成し、
ClassWizardでメソッドを追加した時には、odlファイルに宣言が追加され、
VBからも参照・呼び出しが可能になっていました。

初歩的な手順の問題とは思いますが、ご助言お願いします。

編集 削除
forty-five  2005-05-17 21:41:05  No: 57425  IP: 192.*.*.*

CXXXCtrl クラスじゃなくて,
IXXXCtrl インターフェイスを右クリックすれば
多分 [メソッドの追加] が出てくると思います。

編集 削除
なべ  2005-05-18 10:45:39  No: 57426  IP: 192.*.*.*

forty-five さん
レスありがとうございます。

「今の手順」で、VC++.NETでMFC ActiveXコントロールプロジェクトを作成すると、
初期状態ではクラスビューにはIXXXCtrlというクラスは作成されていないです。
何か1ステップ必要なのでしょうか?

が、「追加しようとしている場所が違うんだな」という観点で見直したところ、
クラスビュー上に_XXXLibというライブラリと、その下に_DXXXというインターフェイス定義がありました。
これを右クリックすると、「メソッドの追加」が選択でき、idlファイルにも定義が追加されました。
VBからの呼び出しも確認できました。

ちなみに、VC++6ではClassWizardから追加していたので意識がなかったのですが、
見直すとやはり_DXXXというインターフェイス定義があり、ここからもメソッドの追加ができるようです。

一応、やりたいことは実現できたのですが、
ご指摘頂いたのと「インターフェイス」の名前が違うので、
一般的な手順からズレているのでは、と、若干不安です。
皆さん普通はどうされてるんでしょうか...。

宜しくお願いします。

編集 削除
forty-five  2005-05-18 18:42:13  No: 57427  IP: 192.*.*.*

すみません, ATL プロジェクトと勘違いしてました。
MFC なら _DXXX が生成されるのでそれでいいみたいです。
失礼しました。

編集 削除
なべ  2005-05-19 11:11:13  No: 57428  IP: 192.*.*.*

とてもスッキリしました。
ありがとうございました。

編集 削除