Visual Studio 2002のVC++でActiveXを作成し、VBから利用しようとしています。
コントロールにメソッドを追加したのですが、VBから参照可能になりません。
idlファイルに追加したメソッドの定義が追加されていないので、
このためだと思うのですが、正しい手順が判らず困っています。
〜〜〜今の手順〜〜〜
① [ファイル]→[新規作成]→[プロジェクト]→MFC ActiveXコントロール でXXXプロジェクトを作成
② クラスビューを表示し、ツリービューのCXXXCtrlクラスを右クリックしてメソッドを追加
〜〜〜〜〜〜〜〜〜〜
MSDNライブラリの以下の説明に従っているつもりなのですが...。
右クリックのショートカットメニューの[追加]からは、
[メソッドの追加]ではなく[関数の追加]と表示されます。
また、[関数の追加]を選択した時に表示されるダイアログも
「メソッド追加ウィザード」ではなく「メンバ関数の追加ウィザード」ですし、
内容も微妙に違うようです(「内部名」というテキストボックスはない)。
ちなみに、VC++6.0でプロジェクトをMFC ActiveX Control Wizardで作成し、
ClassWizardでメソッドを追加した時には、odlファイルに宣言が追加され、
VBからも参照・呼び出しが可能になっていました。
初歩的な手順の問題とは思いますが、ご助言お願いします。
CXXXCtrl クラスじゃなくて,
IXXXCtrl インターフェイスを右クリックすれば
多分 [メソッドの追加] が出てくると思います。
forty-five さん
レスありがとうございます。
「今の手順」で、VC++.NETでMFC ActiveXコントロールプロジェクトを作成すると、
初期状態ではクラスビューにはIXXXCtrlというクラスは作成されていないです。
何か1ステップ必要なのでしょうか?
が、「追加しようとしている場所が違うんだな」という観点で見直したところ、
クラスビュー上に_XXXLibというライブラリと、その下に_DXXXというインターフェイス定義がありました。
これを右クリックすると、「メソッドの追加」が選択でき、idlファイルにも定義が追加されました。
VBからの呼び出しも確認できました。
ちなみに、VC++6ではClassWizardから追加していたので意識がなかったのですが、
見直すとやはり_DXXXというインターフェイス定義があり、ここからもメソッドの追加ができるようです。
一応、やりたいことは実現できたのですが、
ご指摘頂いたのと「インターフェイス」の名前が違うので、
一般的な手順からズレているのでは、と、若干不安です。
皆さん普通はどうされてるんでしょうか...。
宜しくお願いします。
すみません, ATL プロジェクトと勘違いしてました。
MFC なら _DXXX が生成されるのでそれでいいみたいです。
失礼しました。
とてもスッキリしました。
ありがとうございました。
ツイート | ![]() |