社本@元ネオニート Blog

社本@元ネオニート (元々ワック) のいたずら書き (for Programmers)

AILight Banner
AILight Blog

プロフィール

社本@元ネオニート Blog
働いたら負けかなと思っていたのですが。。とうとう働き始めました。アメリカのシアトル・エリアにある企業向けのバックアップソフトを開発している会社です。日本人は私だけ。なんとか。。やっていけてるようです。

目次

Blog 利用状況

記事分類

過去の記事

タグ

アンマネージプログラムでのマネージコントロールのホスト

”アンマネージプログラムでのマネージコントロールのホスト”というと難しく聞こえるかもしれませんが、簡単に言ってしまうと”MFC等で作られた通常のWin32のアプリの上で.NETなコントロールを使う”ということです。

この方法については以前からとても知りたかったのですが、なかなか情報が乏しく困っていました。。
が、つい先日行われたTechEd 2004の「Win32 / MFCアプリケーションにおける .NET Frameworkの利用」のセッションでNRIラーニングネットワークの矢嶋さんがずばり解説してくれました。
MFCの標準クラスとしては実装されておらず、現行のVC7.1のサンプルとして公開されていることが分かりました。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcsample/html/vcsamwinformviewdemonstratesusingnetwindowsformscontrols.asp

VC8(Beta1)でも同機能が提供されているかどうかを調べたところ、MFCの標準クラスに帰化されていることが判明。
はるか昔、ActiveX Documentの実装が、VC4.2ではサンプルとして公開された後、VC5で標準クラスになっていたことを彷彿させます。

実際のクラスは、こんなカンジです。名前を見ただけで雰囲気は分かるかな?
CWinFormsControl, CWinFormsView, CWinFormsDialog

いやーー、ほんと、うれしいっすね。
あとは、ATL/WTLで標準的に使えるようになっていると、もっとうれしいんですが。。
まあ、やり方が分かれば何とか実装できるでしょう。

なお、日本語版 MSDN Magazine の April 2003 (No.36) の24ページにも、VC7.1のサンプルについて簡単な説明がされていることを見つけました。

投稿日時 : 2004年9月23日 8:49


コメントを追加

#  re: アンマネージプログラムでのマネージコントロールのホスト 2004年9月24日 9:57 石野 光仁

ちゃんとMFCって 更新されているんですね。
私でも作れるのだろうか・・・。

暇が出来たら少しみてみたいなぁ なんて思いました。

#  re: アンマネージプログラムでのマネージコントロールのホスト 2004年10月21日 22:13 渋木宏明(ひどり)

レジストリを汚してもいいのなら、ユーザコントロールを regasm すれば、CWnd::CreateControl() できますぜ。

>あとは、ATL/WTLで標準的に使えるようになっていると、
>もっとうれしいんですが。。
>まあ、やり方が分かれば何とか実装できるでしょう。

そんなに難しくないと思う。

結局、regasm してないマネージコントロールは、標準的なクラスファクトリを持っていないだけなので、インスタンス生成のところだけ都合をつければ、あとは普通に ActiveX コントロールとして動作しちゃいます。

が、例によって「落とし穴」があっちこっちにある予感。

VC++ アプリに貼り付けたマネージコントロールの中で <essageBox.Show() とかすると、妙な動きしないすか?
タイトル
名前
URL
コメント