VC++2008で、ATLコントロールクラスを追加し、
そのクラスにPublicメソッドを追加しました。
(IXxxxインタフェースを右クリック→追加→メソッドの追加)

この追加したメソッドを、同じプロジェクト内のMFCクラスから
呼びたい(実行したい)と思っています。
ただ、ATLコントロールクラスがインスタンスできない為、
呼ぶことができません。
(「抽象クラス型のオブジェクトは使用できません」のエラーが出る)

MFCクラスのメソッド→ATLコントロールクラスのメソッドを実行
というのは、不可能なのでしょうか?

ご存知の方がおられましたら情報をください。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

似たようなことをやったことがあります。


よくわからないままコードをぱくってきたのですが、こんな感じでインスタンスを作成して呼び出しができていました。
--------
CComObject<コントロールクラス名> *pObj;
CComObject<コントロールクラス名>::CreateInstance( &pObj );

IDispatch** retObj;
HRESULT hr = pObj->QueryInterface( IID_インタフェースID?, (void**)retObj);

コントロールクラス名 *nobj = (コントロールクラス名*)*retObj;

nobj->呼び出したいインタフェース();

--------------

間違ってるかもしれませんが、多少でもヒントになれば幸いです。
    • good
    • 0
この回答へのお礼

buihyakuさん

早速のお返事大変ありがとうございました。

実際、教えて頂いた内容で実行しましたが、

HRESULT hr = pObj->QueryInterface( IID_インタフェースID?, (void**)retObj);
の所で実行時エラーがでました。
(ビルドはエラーなくできました)

私なりにエラー内容について調べたいと思いますが、
もし何か情報をお持ちでしたら、また教えて頂きたいと思います。

宜しくお願いします。

お礼日時:2011/04/16 15:19

よくみたら、IDispatch*の実体がないので、こうじゃないと受け取れないような気もします。



IDispatch* retObj;
HRESULT hr = pObj->QueryInterface( IID_インタフェースID?, (void**)&retObj);
    • good
    • 0
この回答へのお礼

buihyakuさん

回答有難う御座います。

再度実行してみましたが、結果は同じでした。

ますます気になります。

お礼日時:2011/04/16 22:43

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング