• ベストアンサー

WIN32でOCXを利用する方法を教えて下さい!

MFCでOCXを利用する方法は、MFCのウィザードに従ってActiveXを使うを選び、 AfxEnableControlContainer(); を書けば良いとわかり、実際に使用出来ています。 さて、ところで、Win32でOCXを利用する方法がありましたら、是非、教えて下さい。 いつも、リソース.rcの作成だけはVC++6.0を使っていているのですが、ダイアログにOCXを貼り付けてCTRL+TでテストするとそのOCXは正常に動く!だけに、これがwin32で使えないのはもったいないような気がしてしまうのです。 よろしくお願い致します。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

とりあえず見つけてみました。 MFCを使わずにFlash.ocxを使うサンプル。 http://www.denpa.org/~go/denpa/200304/from11.html ただし、これもATLを使っているのでWin32SDKのみで作っているわけではありません。 これを見て簡単と思うか難しいと思うかはgoonejpさんしだいかと。

goonejp
質問者

お礼

ありがとうございます。 cl atlflash.cpp /link atl.libですね! いつも、メーリングリストやいろいろなところでパソコンに関する質問をする度に、世界は広くて、すごい人たちがいっぱい居ることに感動させられます。 今回は、日本からの情報で感動させられました。 海外でも、私と同じ質問をしている人を10人くらい見かけましたので、まさにそんな私たちのような者にとって福音です!感謝します。 また、これを機に、他の方からご指摘していただいたような点も、機会があったら勉強してみたいと思います。フラッシュは表示できましたが、やはり、表示する以上にいろいろ出来たほうがいいですから…。 ありがとうございました。

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>Using COM objects from MFCと題した次のページには、 >「visibleなCOMコントロールの使用は、簡単!」と書いて >あるようなのですが、私には???で、わかりませんでした。 タイトルの、"from MFC"はどこに行ったんですか? どう見ても、MFCからの利用は簡単といってるんですけど。 それにこのページ、MFCを使用した視覚的ではないCOMオブジェクトの使用法なんですけど。 翻訳サイトでも使ってちゃんと訳して読んでください。 http://www.nifty.com/globalgate/ ちなみに、ここなんですが、 >AfxEnableControlContainer(); >を書けば良いとわかり、実際に使用出来ています。 って、ActiveXコントロールを表示しただけですか? ソース中からプロパティを設定したりとかしましたか?メソッド呼びましたか? ただ貼り付けて表示されただけで使えたと思ってません?イベントはどうしました? urlの内容で、ClassWizardでCOMのラッパークラスを 作成するとあるのはわかりますか? これはMFCでActiveXコントロールを使用するのでも 必要な作業なんですけど。 MFCを利用してActiveXコントロールを本当に使っていたんですか? >ちょっとした簡単なプログラムに、フラッシュを >貼り付けて表示できたら素敵なことなので、 >皆さん、やってみたいと思う人が多いような気が >するのですが…。 ものすごい矛盾したことを書いていることに気づいていますか? 私は、ActiveXコントロール使用するアプリを、MFCを使わないでC++で作成すること自体が簡単ではないといっているのです。 簡単に使いたいのであれば、MFCを使ったり、最初からActiveXコントロールをサポートしているVBなどを使えばいいんですから。 その、「簡単ではない」部分を吸収しているのがMFCであり、VBなのですから。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>目標を絞りますと、「winmain.cppの一つのファイルと >リソース.rc、makefileだけから構成される、 >ocxを使う簡単なプログラムを、VC++ではない >エディタでプログラムを書きたい!」という >ことなので、VCのマクロやMFC、あるいは、 >その他を使っても結構です。 簡単なプログラムでは不可能です。 戻りますけど、COMってわかりますか? インターフェイスってわかりますか? 次に挙げるものがAciveXコントロール側の必要なインターフェイスです。つまり、最低限これらに対する呼び出し元の処理が必要になります(全部ではないですが)。イベントをサポートするのならさらに必要です。 ・IUnknown ・IOleObject ・IOleInPlaceObject ・IOleInPlaceActiveObject ・IOleControl ・IDataObject ・IViewObject2 ・IRunnableObject ・IDispatch ・IConnectionPointContainer ・ISpecifyPropertyPages ・IProvideClassInfo ・何らかの永続記憶用インターフェース これらの意味がわからないようでしたらあきらめてください。 ちなみに、私もMFCやATL等を使わないとC++からActiveXコントロールは使えません。 それでもチャレンジしたいのでしたら、おそらくこちらの本には書かれているかと Inside OLE http://www.microsoft.com/japan/info/press/JPN_ViewMsPress.asp?Book_id=142&list_id=1 購入してチャレンジしてみてはいかがですか? >結構、似たようなことをやりたい!と考える人は多いと思いますので、同好の方よろしくお願い致します。 あまりいないと思います。大変だとわかっている人のほうが多いので。

goonejp
質問者

補足

すみません。さらに目標を絞りますと、「フラッシュ(flash.ocx)をダイアログに貼り付けて表示したい」のです。ただ、フラッシュを表示するだけです。 ちょっとした簡単なプログラムに、フラッシュを貼り付けて表示できたら素敵なことなので、皆さん、やってみたいと思う人が多いような気がするのですが…。 Using COM objects from MFCと題した次のページには、「visibleなCOMコントロールの使用は、簡単!」と書いてあるようなのですが、私には???で、わかりませんでした。 http://www.murrayc.com/learning/windows/usecomfromMFC.shtml 是非、フラッシュをダイアログに表示してみたい!と、この問いかけをきっかけに欲望を起こされた方でも結構です。(^^;) ゆっくりとお待ちしておりますので、よろしくお願い致します。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

まず、WIN32って何を指して言ってるんですか? Win32ってWin32APIを使ったMFCを使わないプログラムのことをさしています? >さて、ところで、Win32でOCXを利用する方法がありましたら、是非、教えて下さい。 まず結論からいうと、できます。Win32SDKで書かれたMFCで使えるのですから当然ですよね。 ただし、使い方は非常に複雑です。 OCXとやり取りをするための取り決めをすべて自前で実装する必要があります。 まず、COMの知識は必須です。必要なCOMのインターフェイスも かなりの数にのぼります。 というような、かなり大変なことをMFCが見えないところで処理をしてくれているのでMFCでは簡単にOCXが使えます。 デザインのテストでは、VC++がそのあたりを処理してくれているので表示はできるということです。

goonejp
質問者

補足

目標を絞りますと、「winmain.cppの一つのファイルとリソース.rc、makefileだけから構成される、ocxを使う簡単なプログラムを、VC++ではないエディタでプログラムを書きたい!」ということなので、VCのマクロやMFC、あるいは、その他を使っても結構です。 winmain.cppは、多少、長くなっても結構です。 どなたか、そういうことを試みて成功している人がいらっしゃいましたら、情報をお願い致します。 結構、似たようなことをやりたい!と考える人は多いと思いますので、同好の方よろしくお願い致します。

関連するQ&A