Vc++画面にC#コンポーネント

[戻る]
Sera 2008/12/10(水) 09:08:50
C#コンポーネントをVC++(ネイティブ)で使用することは可能でしょうか?
直接使えなくても見せかけでも構いませんので方法があれば教えてください
例えばC#で子画面だけ作ってVC++画面の子画面として表示するとか
全画面をC#で書きなおせばいいんでしょうけど
作業時間が取れなくてなんとかC#コンポーネントを
VC++画面にくみこめないかなと思っています
C#コンポーネントはグラフコントロールです。
VC++は2005です。OSはXPです。

επιστημη [E-Mail] [HomePage] 2008/12/10(水) 10:01:31
C++/CLI使えば?

PATIO 2008/12/10(水) 10:30:57
επιστημηさんも書かれていますけれど、
完全にネイティブでと言う話なら無理なんじゃないかと思います。
C#は.NET Frameworkを使っているので少なくともC++/CLIの助けが
必要になると思います。

C++/CLIでラッパーでも作れば、何とかなるのかなぁ。

Sera 2008/12/10(水) 11:20:04
[[解決]]
ありがとうございます。
C++/CLIだと普通にC++のForm使えるんですね…

MFC01::Form1^ form1 = gcnew MFC01::Form1;
form1->Show();

グラフのみ.netコンポーネントにしたいだけなので
これでいこうと思います。

subaru 2008/12/11(木) 11:08:07
>MFC01::Form1^ form1 = gcnew MFC01::Form1;
>form1->Show();
>
>グラフのみ.netコンポーネントにしたいだけなので
>これでいこうと思います。

画面自体をFormで作るならそれでいいけど、MFCのダイアログ内でグラフのみ
使うとかだったらグラフコントロールのHandleプロパティを使って
SetParentで子ウインドウにすることで、MFCダイアログのコントロールとして
見せることもできるんじゃないかなと。

ちなみにその場合はガベージコレクタに回収されてコントロールが
消滅したりしないように、あらかじめダイアログクラスのプライベートメンバに
gcrootテンプレートの変数を用意しておき、gcnewで生成したコントロールの
インスタンスをそちらに割り当てる必要があると思われます。

επιστημη [E-Mail] [HomePage] 2008/12/11(木) 11:41:18
きょうびのMFCはFrame内にWindows-Formsを
貼り付ける台紙:CWinFormsViewが用意されちょります。

επιστημη [E-Mail] [HomePage] 2008/12/11(木) 11:42:18
ご参考: CWinformsView
http://msdn.microsoft.com/ja-jp/library/6xfx8bsa.aspx

subaru 2008/12/11(木) 13:15:12
>きょうびのMFCはFrame内にWindows-Formsを
>貼り付ける台紙:CWinFormsViewが用意されちょります。

ほんとだ・・・
コントロールもCWinFormsControl::CreateManagedControl()
呼ぶだけで作れました。

MFCも奥が深いですね(^^;

古いスレッドには追加発言できません。