フォームアプリケーションでカスタムダイアログを使用するには?

解決


O.Diver  2006-07-26 20:37:17  No: 62569  IP: 192.*.*.*

はじめまして。O.Diverといいます。
使用している環境は、
Windows XP SP2
Visual Studio 2005 Academic Edition(プラットフォーム:C++)
です。

プロジェクトの種類はフォームアプリケーションです。
テキストを入力するためのダイアログを表示したかったので、Dialogのリソースを追加してEditControlを配置しました。そして、Dialogのデザインを開いた状態で、デザインをダブルクリックしてMFCクラスウィザードを起動し、Dialogと同名のクラスを作成しました。この状態でビルドしてみたら、以下のようなエラーが出ました。

C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afx.h(24) : fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

なので、「#define _AFXDLL」が足りないんだと思い、「stdafx.h」に追加したのですが状況は解決しませんでした。同じようなことに成功した方いましたら、教えてください。よろしくお願いします。

編集 削除
Blue  2006-07-26 22:00:36  No: 62570  IP: 192.*.*.*

解答ではありません。

フォームアプリケーションなのにわざわざなぜMFCを使うんでしょうか?
> Dialogのリソースを追加
普通に、追加でWindows フォームを追加すればよいのではないでしょうか?

ソリューションツリーで右クリック→追加→UI   Windows フォーム

編集 削除
O.Diver  2006-07-26 22:50:51  No: 62571  IP: 192.*.*.*

Blueさん

おっしゃる通りです。
単純に専用のフォームを作成すれば解決できるのですが、
もしそれを実現する手段があれば、知りたいと思って投稿させていただきました。
また、間違っているかもしれないし、コーディング次第かもしれないのですが、
ダイアログを使った方がメモリにゴミを残さないと思ったということもあります。

編集 削除
Blue  2006-07-26 23:23:23  No: 62572  IP: 192.*.*.*

> ダイアログを使った方がメモリにゴミを残さないと思ったということもあります。
この発想はどのようにたどりついたのかものすごく興味があります。

とりあえず、プロジェクトのプロパティで 

MFCの利用 を 共通DLL でMFCを使う
共通言語ランタイムサポート を /clr 

にすれば、コンパイルは通るようですが、実行できないですな、、、

編集 削除
Blue  2006-07-26 23:59:56  No: 62573  IP: 192.*.*.*

一応MSDNには
> MFCの利用 を 共通DLL でMFCを使う
> 共通言語ランタイムサポート を /clr 
のことが書いてありました。
http://msdn2.microsoft.com/ja-jp/library/ms235211.aspx

編集 削除
O.Diver  2006-07-27 13:02:17  No: 62574  IP: 192.*.*.*

>> ダイアログを使った方がメモリにゴミを残さないと思ったということもあります。
> この発想はどのようにたどりついたのかものすごく興味があります。
なんとなくです。以前、フォームを使って同様のことをしたのですが、
第2のフォームを閉じるときの処理が悪かったのか、デバッグ時にメインフォームを閉じても、
デバッグ状態から抜けないことがあったので、そのように思ったんです。

公式サイトを調べてくださったんですね。ありがとうございます。
早速見てみます。私がMSDNを使うと、なかなか調べたい情報にヒットできないんです。使い方が難しい。

編集 削除
O.Diver  2006-07-28 09:26:49  No: 62575  IP: 192.*.*.*

Blueさん

紹介していただいたMSDNを見て、同じように設定してみたところ、
カスタムダイアログを生成したときに、自動的に生成されるコードに対してエラーが出ました。
ちょっと根が深い話になってきましたので、とりあえずは専用のフォームを起こす方法で対応しようと思います。

ありがとうございました。

編集 削除
マテウス  2007-11-01 11:29:55  No: 62576  IP: 192.*.*.*

すみません。
上記を読ませていただきましたがこれは逆(ダイアログ形式で作成したプロジェクトにWindowsフォームを追加する)も実行することはできないのでしょうか?

編集 削除