- - PR -
VC++.NET 2005でCLRからMFCを呼び出す
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-12-19 17:12
こんにちは。
これから開発しようとしているアプリケーションで、一部の機能がMFCを介して 呼び出すようなつくりのライブラリがあります。 すべてMFCで開発すればすむのですが、画面系が凝ったつくりで、非効率なMFCでつく るにはかなり大変な物ですので、.NET Frameworkを利用して画面設計したいのです。 そこで、基本はVC++2005のCLRで、一部はMFCを呼び出すような開発方法を検討中です。 ためしに、以下を参考にマネージド/アンマネージドの混在アプリを作って呼び出して みたのでうが、実行時にエラーが出ます。 http://msdn2.microsoft.com/ja-jp/library/ms235211(VS.80).aspx 具体的には、CLRアプリのプロジェクトに上記のとおりプロジェクトのプロパティを 変更して、ダイアログのリソースを追加して、そのダイアログをクラスとして追加 して、そのクラスに #include "resource.h" を追加して、コンパイルします。 コンパイルは通ります。 それを実行すると、 Debug Assertion Dailed! Program: ... File: dbgheap.c Line:1414 というエラーダイアログが出ます。 CLRとMFC混在のプログラムを作った実績のあるかたおられませんでしょうか? また、このエラーを退治するにはどうすればいいのでしょうか? よろしくお願いします。 [ メッセージ編集済み 編集者: maru 編集日時 2006-12-19 17:13 ] [ メッセージ編集済み 編集者: maru 編集日時 2006-12-19 17:15 ] | ||||||||
|
投稿日時: 2006-12-19 17:20
以前質問しました。参考にどうぞ。
CLRプロジェクトにてMFCを使用する方法 | ||||||||
|
投稿日時: 2006-12-19 18:08
こんにちは。
ありがとうございます。 とりあえず手順通りすると起動時にはエラーは出なくなりました。 ただ、以下のコードをボタンクリックに追加して実行してみたところ、 dlgcode.cpp で同じようなエラーが出ます。 そもそも、このエラーはどういう理由から出るものなのでしょうか? CLRのメモリ管理?
| ||||||||
|
投稿日時: 2006-12-19 20:05
というかそのコードCLRでなくてもキチンと動きますか?
とってもありえないコードだとおもうのですが。。。 [ メッセージ編集済み 編集者: Blue 編集日時 2006-12-19 20:06 ] | ||||||||
|
投稿日時: 2006-12-20 10:10
こんにちは。
返答ありがとうございます。 お騒がせしました。MFCでモーダル表示の場合、Createは不要のようですね。 問題なく動きました。 Java/c/c++/VB.NET/C#はそれなりの経験はあるのですが、MFCにいたっては今まで 仕事に関係なかったので避けてたとこがあり、いまいち使い方がよく分かってません でした。 なんで、モードレスではCreateしてモーダルではCreateが必要ないかなど、仕組みが わかってなく、そんなもので終わらせてもいいのですが、いまいちすっきりしません。 また、調べてみようと思います。 ありがとうございました。 | ||||||||
|
投稿日時: 2006-12-20 17:00
こんにちは。
CLRフォームからMFCフォームを開くことはできました。 今度はActiveXコントロールで行き詰ってます。 具体的にはCLRフォームにActiveXコントロールを貼り付けてみると問題なく動きます。 CLRフォームから呼び出されるMFCフォームにActiveXコントロールを貼り付けてDoModal してもうんともすんとも動きません。普通、DoModalでモーダルフォーム側に処理が 移ると思うのですが、なんかするりと処理が抜けてしまいます。 何が原因か分かる方いませんでしょうか? PS. C++/CLIってなんかすごい!って思うのは私だけ? | ||||||||
|
投稿日時: 2006-12-20 17:15
新しくスレを建てたほうがよいかも。
そのダイアログはMFCのプロジェクトではきちんと表示できますか? CoInitializeとかが必要なのかも。(<-適当) | ||||||||
|
投稿日時: 2006-12-20 17:41
こんにちは。
MFCプロジェクトでは、ActiveXを貼り付けただけのフォームですが、特に初期化など のコードを書くことなく問題なく表示されます。 同じことをCLRで呼び出すと、何事もなくするりとDoModalが終わってしまいます。 ちなみに、MFCがよく分かってないため、CLRの問題かMFCの問題かの切り分けがまだ よくできない状態です。 |