こんばんは
ちると申します。
質問の内容が抽象的で大変申し訳ないのですが
VBで作成したOCXをVCで呼び出すにはまず何をすればよいでしょうか
よろしくお願いします。
メニューで[プロジェクト]-[プロジェクトへ追加]
-[プロジェクトおよびコントロール]を選択。
[Registered ActiveX Controls]フォルダ内に登録したOCXが一覧されるので、
希望のものを選択し、[挿入]ボタンをクリック。
> -[プロジェクトおよびコントロール]を選択。
[コンポーネントおよびコントロール]を選択。
です。
失礼しました。
ご回答ありがとうございます。
いまさらながら詳細手順を記載いたします。
VB側
①VB6.0のActiveXコントロールを作成
②シェイプで円を書く
③関数test()を作成(円を青く塗りつぶす機能)
④OCXを作成
VC側
①ダイアログベースで新規作成
②教えていただいたとおり[プロジェクトおよびコントロール]を選択しました。
この手順を踏んだところ
「ActiveXコントロールが正しく登録されていないか、またはタイプライブラリの
バージョンが正しく借りません、コンポーネントギャラリで削除及びインポートすること
によってコントロールの登録を行ってください。」
とのエラーが出ました。
そこでコンポーネントギャラリについてMSDNで調べた結果
「ギャラリへのサードパーティ製コンポーネントおよび ActiveX コントロールの追加」
というページを発見しました。。。VBはサードパーティーなのでしょうか?
また、サードパーティーだとしてもMSDNに記載されている場所
\Program Files\Microsoft Visual Studio\VC98\bin
にはRegsvr32.exeがありませんので試す手段がありません・・・
見当違いな探し方をしているかもしれませんが
なにかお気づきの点がありましたらご教授頂けるようよろしくお願い致します
追記:
ActiveXを1から学べる適切な参考書籍及び
HPなどがございましたら教えていただきたいと思います。
よろしくお願いいたします。
自己レスです。
全検索をかけてみたところRegsvr32.exeはSYSTEM32直下に在ったようです。。
さっそくOCXを登録して、無事にダイアログ上に貼り付けることが出来ました。
そこでまた問題が・・・
ボタンを作成し以下のコードを書いてみました。
void CVBcalltestDlg::OnButton1()
{
C_UserControl1 aaa; //OCXで登録したVBクラスの宣言
aaa.test(); //上記説明のメソッド
}
これで「さぁ色が変わるぞ!」
と思い実行してみたところaaa.test()呼び出しのところで
以下のエラーが出てしまいました・・・
どういうことなのでしょうか?
エラー内容-----------------------
Debug Assertion Failed!
Program:...RATOR\MYDOCUMENT\プログラム\VBcalltest\Debug\VBcalltest.exe
File:winocc.cpp
Line:345
For information on how your program can cause an assertion
failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
中止/再試行/無視
---------------------------------
エラー内容(翻訳 by EXCITE)
あなたのプログラムがどのように主張失敗を引き起こすことができるかについて
の情報については、Visual C++ドキュメンテーションを見る、の上で、主張します。
「Debug Assertion Failed!」が発生したときに重要なのは、
> File:winocc.cpp
> Line:345
の部分です。winocc.cppファイルを探して、345行を見てください。
探すのが面倒ならば、「再試行」ボタンを押してください。
該当位置が表示されます。
で、今回の場合ですが、
> C_UserControl1 aaa; //OCXで登録したVBクラスの宣言
これはオブジェクト用の変数を宣言しただけで、
ダイアログに張り付いているモノとは何の関係もありません。
ClassWizardの「メンバ変数」でオブジェクトと変数を結び付けるか、
あるいは、
C_UserControl1* paaa = GetDlgItem(オブジェクトID);
として取得します。
#VBでも変数宣言しただけではオブジェクトはできなかったような…。
そのとおりでした。。恥ずかしい><
dairygoods様ありがとうございます。
今度からはもう少し慎重に調査してから質問するよう心がけます。
長々と失礼致しました。