ActiveXのVC++での利用

このQ&Aのポイント
  • ActiveXのVC++での利用方法について
  • Visual Studio 6.0または2003を利用してActiveXをVC++で利用する方法について調べています。
  • MFCアプリケーションを作成し、ActiveXコントロールを挿入する方法についての手順を理解していますが、その後の処理方法について困っています。
回答を見る
  • ベストアンサー

ActiveX の VC++ での利用

ある制御装置をパソコンからの命令で動かしたいのですが,その装置の SDK が ActiveX コントロールの形で提供されています.プログラミングは VC++ で行いたいのですが,ActiveX を VC++ で利用する方法がイマイチわからず,困っております. 当方の環境は Visual Studio 6.0 または 2003 です.どちらでも利用できますが,できれば 2003 を利用したいと考えております. まず MFC アプリケーションを作成し,ダイアログエディタで右クリック→ActiveX コントロールの挿入で,使用する ActiveX コントロールを貼り付けます. ここまでは合っていますでしょうか?  私の勉強不足で申し訳ないのですが,ここから先をどう進めてよいのかわかりません. あくまでもイメージなのですが,その ActiveX が提供する関数を C コードの中で呼び出す,といった形で使用できないでしょうか? わかる方いらっしゃいましたら,よろしくお願いいたします.

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ClassWizradでラッパークラスを作成してください それからそのクラスに対しての変数を宣言します。 ラッパークラスをちゃんと作らないと呼び出すことは出来ません。  制御装置のメーカサイトにサンプルプログラムとかないですか? 文章だけで操作をお教えするには限界があります。 古い記事ですが http://w3.fb.u-tokai.ac.jp/std/LIB/SampleDoc/vcreadme.html 操作は同じです

zawa1983
質問者

お礼

非常に有益な情報ありがとうございます. リンク先を参考にプログラムしてみたところ,かなりいいセンまでいくことができました. しかし,生成されたラッパークラスにあるメソッドは,引数などが VC 側で一部変更されており,手元にある ActiveX の仕様書とは少し違ってしまっています.そのため,VC 側で変更された引数に何を与えればよいのかわからず,お手上げ状態になってしまいました.

その他の回答 (2)

回答No.3

うーん!?仕様書と物が違うのは提供元に確認するしかないですね もしかしてOposですか? 後仕様書はVB用だったらVCとは引数の型が違う事があります

zawa1983
質問者

お礼

確かに仕様書は,VB 用のものです.ただ,購入時に販売先に聞いたところ,VC でもプログラミングは可能とのことでした. そこで,VC でのプログラミングについてサンプルコードなどもらえないかどうか販売先に問い合わせたところ,こちらには VB の開発環境しかないので,それは無理,と言われました… とりあえず,引数として何を与えればよいのか,という問題については,それっぽい引数を片っ端から与えることでなんとか解決することができました. SuperRINTA 様には大変お世話になりました.ありがとうございました.

回答No.1

ActiveXを貼り付けたらウィザードでそのActiveXに変数をつけてください、m_OCXなどとします。 そうすることでm_Ocx->initialize()などとメソッドやプロパティに アクセスできます。

zawa1983
質問者

お礼

早速のご回答,大変ありがとうございます. ダイアログに貼り付けた ActiveX 上で右クリック→変数の追加,でしょうか?ただ貼り付けただけでは,変数の追加を選択することができません.右クリック→クラスの追加で,まずクラスを作るのかと思いましたが,クラスを作ってから再び変数を追加しようとすると, ランタイムエラーが発生しました.デバッグしますか? というダイアログが出ます.ここでデバッグすると, 拡張プロバイダでこのオブジェクトのエクステンダを返すことができませんでした. というエラーが出ます. 何かやり方が間違っているのでしょうか?

関連するQ&A

  • VC++6.0で作成されたActiveXコントロール

    まだプログラミングを始めて日が浅いため、馬鹿な質問をしていたら申し訳ありません。 現在、ActiveXコントロールを使ったプログラムを作成しております。 メインの環境がVC++2008なのですが、このActiveXコントロールがVC++6.0で作られた物であるため、VC++2008で使用しようとするとエラーが出てしまいます。 またプログラム中で使っているライブラリの中でVC++6.0で動いてくれないものもあり、私としては慣れないVC++6.0より何とかして2008でこれを使いたいのですが・・・ 一応現在はVC++6.0でこのActiveXコントロールを動作させるプログラム(以下exeと略)を作り、このexeをVC++2008のプログラム内でCreateProcess関数で呼び出すと言う方法を取っています。 引数はコマンドライン引数、処理結果はファイル経由で受け渡しをしています。 このActiveXコントロールというのがあるカメラから画像を取得するものですので、どうして処理時間の長さが気になります。 そこでプロセスの起動と終了にかかる無駄な時間を減らすため、このexeをDLL化できないものかと考えています。 前置きが長くなりましたが、私が質問したいことは (1)「VC++6.0で作られたActiveXコントロール」を使用したDLLを作れるのか?作れるのならばそれはVC++2008で使えるのか? (2)DLL化以外に処理時間を短くする方法はないか?(例えばexeを立ち上げっぱなしにしたまま引数等をメインプログラムとやり取りできないか?) の2点です。 なおこのActiveXコントロールはソースがないため、VC++2008でビルドしなおすと言う手が使えません。 よろしくお願いします。

  • regsvr32でActiveX登録を行ったocx

    regsvr32 で ActiveX登録を行った ocx がリソースエデイタ「のActiveX コントロールの挿入」で使用できなくて困ってます。 開発環境は VisualStudio2005 の VC++ で、Version は 8.0.50727.867 になります。 レジストリエディタで確認すると以下のレジストリキーで登録されていることを確認できるのですが。 HKEY_CLASSES_ROOT\CLSID\{9BD4A8F2-56BA-11D3-915D-00C04F797034} 『ActiveX コントロール テスト コンテナ』の「コントロールの登録」ダイアログで表示される一覧中には含まれていません。 また、「コントロールの登録」ダイアログで「登録」ボタンを押しても一覧に追加も行われません なんとなくセキュリティっぽい事までは分かるのですが、どなたかヒントをお持ちでしょうか?

  • ActiveXについて。

    初めて質問します。 ホームページでFLASHムービーを使っているのですが、以下のようなダイアログが出てFLASHムービーだけが表示されません。インターネットオプションのセキュリティのレベルを中にすると見れるマシンもあるのですが、変更しても見れないマシンもあるようです。 このページから ActiveX コントロールに、安全でない可能性がある情報が提供されています。現在のセキュリティの設定では、このようなコントロールは実行できません。そのため、このページは正しく表示されない可能性があります。 ActiveX コントロール自体、よく理解していないのですが、どなたか詳しい方いらっしゃったら教えてください。お願いします。

  • ActiveXがインストール出来ない

    ActiveXがインストール出来ない WinXPにIE8を使用しています。 ActiveXが必要なサイト移動したいのですが、インストール出来ていないので見ることが出来ません。 IE8のシステムの、(1)ActiveXコントロールとプラグインの実行を「有効」、(2)スクリプトを実行しても安全だとマークされているActiveXコントロールの~を「有効」、(3)署名済みActiveXコントロールのダウンロードを「ダイアログを表示する」に設定しています。 (あるサイトでActiveXをインストールする際の推奨設置となっていた為) ところが、(2)を有効にすることで、コンピューターが危険にさらされている。。。と情報バーに表示される様になりました。 上記設定にしても、相変わらずActiveXが必要なサイトに移動しても、情報バーにはActiveXのインストールを許可するかどうかのメッセージは出ません。 IE8には似たようなトラブルが続発しているようですが、色々探しましたが未だ解決出来ません。 もうIE7に戻したいのですが、その辺も含めて解決策をご指示頂けませんでしょうか。 宜しくお願い致します。

  • VC++の参考書

    VC++(マネージコードではない)の参考書を探しています。 VC++2005かVC++6のどちらかで、MFCを利用するような形で。 1つ1つの機能や命令の説明がされているのではなく、1冊や 各章ごとに1つのアプリケーションを作る、その上で機能や 命令が説明されている、みたいな参考書を探していますが、 今のところ出会えません。 結構VB6だったり.NET系の参考書だとそういうのも多いようですが、 VC++に関しては全然見つかりません。 ご存知の参考書がありましたらご紹介下さい。

  • VC2010とdirectX11について

    Visual Stadio 2010 C++とDirecX11でCG制作を使用とおもっていますが まさかの 環境設定(インクルードファイルの指定、ライブラリの指定など…)でつまずいています。 DirectXの本も買ったのですがVCが古いのと、Platform SDKが変わったのとかで わからない事だらけです(・_;) なので環境設定をもしよろしければ ことこまかにおしえていただけませんか?

  • VC++6.0で作成したクラスをVB6.0で使うには?

    初めて投稿します。 プログラミング初心者の為、初歩的な質問になるかもしれませんがご容赦下さい。普段、主にVisual Basic6.0(以下VB6.0)でプログラミングを行なっています。 VB6.0には演算子のオーバーロードする機能がない(?)ため、Visual C++6.0(以下VC++6.0)でプログラミングを行い、VC++6.0で作成したクラスをVB6.0で呼び出して使用したいと考えています。 インターネット上でいろいろと調べてみたのですが、その方法がわからず投稿させていただきました。VC++6.0で作成したDLLの中の関数をVB6.0で呼び出して使用する方法はわかったのですが、クラスということになると、DLLでは無理なのでしょうか? どなたか、VC++6.0で作成したクラスをVB6.0で呼び出す方法、または勉強方法(教材)などを教えていただけると助かります。 宜しくお願いいたします。

  • VC++ VS2005 タブコントロールに貼り付けたリストコントロールが消える

    こんばんは。 早速ですが質問です。 VC++ .NET MFCプロジェクトで リソースエディタでダイアログにタブコントロールを貼り付け(1)、 そこに同じようにリソースエディタでリストコントロールとボタンを 貼り付けたダイアログを作りました(2)。 1のタブコントロール上に2をソースで貼り付け 表示させ、2のInitDialogとボタンクリックのイベントを作成して Listコントロールに値を入れるということをしたのですが リストコントロールの表示が消えてしまいます。 マウスでリストコントロールが貼りついている位置にカーソルを当てるとその部分がでてきます。 原因のお分かりになるかたご回答よろしくお願いします。

  • ACTIVEX(OCX)コントロールでのバージョンプロパティの設定

    現在、VC++でACTIVEX(OCX)コントロールを作っています。 プロパティ VERSION でVS_VERSION_INFOのFILEVERSIONの値を返却するようにしたいと思っています。 また、VBなどに貼り付けたときにプロパティ VERSIONのところにバージョンが表示されるようにしたいと思っています。 GetFileVersionInfo を使ってバージョン情報を取得する関数は作成したのですが、この関数を本来どこでCALLすべきなのかがわかりません。 VC++は初めてなので、よくわかっていません。 教えていただけないでしょうか。 また、GetFileVersionInfo を使用せずに簡単にバージョンをプロパティとして提供する方法があれば教えてください。

  • VC++のダイアログベースアプリケーションのボタンについて

    開発環境:WinXP(Home) + Visual C++6.0 Enterprise こんにちは。VC++にてダイアログベースのアプリケーションを開発しております。 VC++に関しては数年ぶりなのですっかり忘れておりまして、入門書から読んでおります。プログラミング歴自体は15年程度になります。 ダイアログベースのアプリケーションのスケルトンを作って、すぐに実行させると、一番下にOK,キャンセル,適用,ヘルプというボタンが出ます。 これらのボタンをすべて消したいのですが、どうしたらいいのでしょうか? リソースを見てもないので、困っております。 どなたかご教授お願い致します。

専門家に質問してみよう