MFC の FormView とダイアログの違いは何ですか? FormViewをいつ使用し、いつDialogを使用するかを誰でも提案できますか?
4 に答える
上記の投稿には丁重に反対しなければなりません。CFormView とダイアログの間に違いはありません。
CFormView は、モードレスとして作成され、クライアントとしてフレームによってホストされ、フレームのサイズ変更としてサイズ変更されるダイアログです。これは、任意のスタンドアロン ダイアログと同様に、提供する必要があるダイアログ リソースから作成されます。ダイアログ コントロールのすべてのメッセージ ハンドラは同じです。
CFormView Create メンバーは CreateDlg を呼び出し、コンストラクターによって読み込まれたダイアログ テンプレートを渡します。CWnd CreateDialog は、CreateDlgIndirect メンバーを呼び出します。このメンバーは、モードレス ダイアログを作成する CreateDialogIndirect API を呼び出します。
モードレス ダイアログを別のダイアログ内に埋め込むこともできますが、それは依然としてダイアログです。
誰か_スマイリー
ダイアログとCFormViewに関する質問に答えるため。
ダイアログベースのアプリケーションを使用することはめったにありません。より複雑なUIのオーバーヘッドのない単純なタスクを必要とする場合のみ。
ほとんどのプログラマーはダイアログベースのアプリから始め、いくつかの機能の実装に取り掛かった後、通常、アプリケーションにはメニューとツールバーとステータスバー、データの保存/処理オブジェクト、コマンドルーティング処理などが必要になります。
サイズ変更不可能なフレームでSDIアプリケーションを作成することをお勧めします。
ダイアログの外観とMFCアプリケーションのすべての機能が無料になります。ドキュメントサポートが必要ない場合は、ドキュメントサポートを使用する必要はありません。
ダイアログ アプリケーションは、ダイアログを表示するだけです (および、ダイアログに配置したすべてのコントロールと、そこからポップアップするその他のコントロールなど)。
FormView は、メイン メニューなどを備えたごく普通のアプリケーションを提供しますが、ビュー パーツはコントロールを保持することもできます。
ダイアログだけが必要な場合はダイアログを使用し、コントロールを保持できるビュー (おそらく複数の) が必要な場合はフォームビューを使用します。大きな違いは、ダイアログを作成するとアプリケーション全体の基本的な性質が変わることです。フォームビューは 1 つのビューを変更するだけです。必要に応じて、(たとえば) 他の (非フォーム) ビューを使用することもできます。
コーダーの観点から、FormViewは、WYSIWYGの方法で、ダイアログリソースを使用したUIコントロールのレイアウトをサポートします。したがって、多くのコントロールを使用してビューを作成する場合は、FormViewが役立つ可能性があります。
ダイアログはビューではありません。全く違います。ダイアログは個別のウィンドウであり、通常はモーダルイベントループで(または特別な場合はモードレスで)表示されます。