13

ダイアログをメイン ウィンドウとして使用するのは通常ですか? それでは、RegisterClassEx を介してユーザー クラスを登録せずに? CreateWindow() を介してすべての操作を行うことはできますか? ダイアログを作成してメインウィンドウとして使用するのではなく、CreateWindow() を介してボタン、エディットボックスなどのコントロールを作成する必要があるのはなぜですか?

また、ダイアログとウィンドウの主な違いと、2 番目ではなく 1 番目を使用する理由も知りたいです。

ありがとう

4

3 に答える 3

6

ダイアログをメインウィンドウとして使用するのは通常ですか?

はい、それはかなり一般的です。

では、RegisterClassExを介してユーザークラスを登録せずに?

ダイアログは通常、事前定義されたウィンドウクラスであるため、通常は登録する必要はありません。

また、ダイアログとウィンドウの主な違いと、なぜ2番目ではなく最初に1つを使用するのかを知りたいです。

2つの大きな違いは、ダイアログボックスのサイズを変更できないことと、最小化ボタンまたは最大化ボタンがないことです(デフォルトでは、これには回避策があります)。名前、ダイアログボックスを覚えておいてください。言い換えれば、それらはユーザーとの対話を行うために使用されます(入力を受け取り、ユーザーにメッセージを表示します)。ある意味では、他のウィンドウと同じように、CreateWindowxxの下などが呼び出されます。ただし、これらはある程度事前定義されたウィンドウであり、すばやく作成でき、使用できる操作には制限があります。

また、ダイアログはウィンドウプロシージャではなくダイアログプロシージャを使用します。ウィンドウプロシージャは、一部のコントロールの初期化など、デフォルトの処理を実行します。

于 2012-06-19T21:54:33.840 に答える
2

ボタンのようなさまざまなコントロールのすべてが実際には単なるウィンドウであるのと同じように、ダイアログは一種のウィンドウです。ダイアログは、ダイアログが使用される種類のものをサポートするための多くの追加機能を備えた一種のウィンドウであると考えることができます。

ダイアログには2つのタイプがあります。モーダルは表示され、使用してから閉じることを期待します。非モーダルは表示されますが、閉じられるまで入力フォーカスをキャプチャして保持しません。モーダルダイアログを使用してエラーを表示したり、ユーザーに設定を要求したりするアプリケーションで使用されるこれら2つのタイプを確認できます。非モーダルは、表示されたままのツールボックスの一種として機能し、必要なときにクリックします。その上で何かをするために、そして他の時にあなたはアプリケーションで他のウィンドウを使用しています。

通常、ダイアログにはメニューバーがありませんが、代わりにすべてのコントロールが表示されるか、タブやその他の種類のプレゼンテーションから簡単にアクセスできます。Visual Studioおよびその他のIDEには、さまざまなコントロールを配置できるダイアログデザイナと、コントロールをクラスおよびクラスメンバーに関連付けるためのウィザードがあります。

これは、ダイアログとウィンドウの大きな違いをもたらします。ウィンドウは一種の空のページであり、そのページで何かを行うには、より多くの作業が必要です。ダイアログには、設計を容易にするツールがありますが、ツールボックスによって大部分が制約されます。

基本的にユーザーが特定の設定を指定してからいくつかのタスクを実行できるようにすることに重点を置いたアプリケーションがある場合、ダイアログはかなりうまく機能します。より複雑なユーザー操作が必要な場合は、他のすべてのダイアログとコントロールを管理および操作するためのベースとしてのアプリケーションウィンドウがより必要になります。

于 2012-06-19T22:08:31.737 に答える
2

はい、アプリケーションはダイアログベースにすることができます。VisualStudio と MFC を使用している場合は、そのためのウィザードさえあります。

VS2010 で、[新しいプロジェクトの作成] > [MFC アプリケーション] を選択します。[アプリケーションの種類]で [ダイアログ ベース] を選択します。ウィザードの残りの部分をクリックすると、レースに出発します。

ダイアログ ベースのアプリケーションは、ドキュメント/ビューなどの他の設計よりも、アーキテクチャがはるかに単純です。このように、単純なものはすぐに「打ちのめす」のがはるかに簡単ですが、より複雑なことをしようとすると、設計の限界が明らかになります。実稼働品質のダイアログ ベースのアプリケーションを構築するために、ダイアログ ベースのアプリで Doc/View アーキテクチャの多くを複製することになる可能性があります。その場合、あなたは本当に自分自身を救いましたか?

于 2012-06-19T21:34:57.893 に答える