6

デルフィで; Application.MessageBox、Windows.MessageBox、または Dialogs.MessageDlg の違いは何ですか? または、どちらがコンピューターのメモリをより効率的に使用できますか?

4

6 に答える 6

11

Windows.MessageBoxWinAPI MessageBox であり、Application.MessageBox はそのラッパーです。ただし、Dialogs.MessageDlg は VCL フォームです。したがって、メモリまたはスレッドの安全性が気になる場合は、最初の 2 つが適している可能性があります。MessageDlg OTOH はより柔軟で使いやすくなっています (もちろん私見です)。

最近では、タスク ダイアログ (TaskDialogIndirect、TTaskDialog、または別のラッパー) を検討します。

于 2009-03-27T13:06:52.587 に答える
3

Windows MessageBox は OS によってローカライズされます (はい、いいえ、キャンセル...)。MessageDlg は手動でローカライズできます。

于 2009-03-27T14:19:53.207 に答える
1

メッセージ ボックスでは、メモリの使用量がそれほど問題になることはありません。Consts.pas ユニットからローカライズできるので、個人的には VCL フォーム (Dialogs.MessageBox) を好みます。また、「今後これを表示しない」チェックボックスなど、カスタム コントロールを追加できる点も気に入っています。

于 2009-03-30T14:44:32.547 に答える
1

私の記憶が正しければ、Delphi VCL メッセージ ボックスと Windows のメッセージ ボックスには重要な違いが 1 つあります。アプリケーション メッセージの処理を停止するフラグを指定できます (例: MB_SYSTEMMODAL)。これは、アプリケーションを「フリーズ」する必要がある場合にエラーを表示するのに役立ちます。Delphi MessageDlg は、画面上であってもタイマー イベントを発生させます。見る:

MSDN MessageBox のもの

于 2009-03-27T16:53:40.500 に答える
0

メッセージ ボックスが使用するわずかなメモリ量を気にするのはなぜですか。Delphi アプリケーションを作成する際に考慮しなければならないことが他にもたくさんあります。いずれにせよ、私が知る限り、これらはすべて Windows MessageBox API のシン ラッパーです。

于 2009-03-27T11:52:59.503 に答える
0

それらはすべて同じことを行います - WinAPI 関数 MessageBox() を呼び出します。リソース消費量の差がある場合、その差は最小限です。どうしても気になる場合は、MessageBox() を直接呼び出すことができます。「uses Windows」を含めるだけです。

于 2009-03-27T11:54:06.133 に答える