Вопрос

В Дельфы;каковы различия между приложением.MessageBox, Windows.MessageBox или диалоговыми окнами.MessageDlg?Или что эффективнее использовать компьютерную память?

Это было полезно?

Решение

Windows.Почтовый ящик является WinAPI MessageBox, приложение.MessageBox - это оболочка вокруг него.Диалоги.MessageDlg, однако, является формой VCL.Так что, если вы беспокоитесь о памяти или потокобезопасности, первые два могут подойти лучше.MessageDlg OTOH более гибкий и простой в использовании (ИМХО, конечно).

Другие советы

Windows MessageBox локализован операционной системой (Да, Нет, Отмена ...), MessageDlg может быть локализован вручную.

Почему вас волнует крошечный объем памяти, используемый окном сообщения?Есть много других вещей, о которых вам следует позаботиться при написании приложения на Delphi.В любом случае, насколько мне известно, все это тонкие оболочки вокруг Windows MessageBox API.

Если я правильно помню, есть одно важное различие между окнами сообщений Delphi VCL и окнами Windows - вы можете указать флаги, которые останавливают обслуживание сообщений приложения (например, MB_SYSTEMMODAL).Это может быть полезно для отображения ошибок, когда вам нужно "заморозить" ваше приложение - Delphi MessageDlg по-прежнему будет запускать события таймера, даже находясь на экране.Видишь:

Содержимое MSDN MessageBox

Использование памяти не должно быть такой проблемой для окон сообщений.Лично я предпочитаю форму VCL (Dialogs.MessageBox), поскольку я могу локализовать ее из модуля Consts.pas.Мне также нравится это из-за того, что я могу добавлять к нему пользовательские элементы управления, такие как флажки для "не показывать это снова" и другие подобные вещи.

Все они делают одно и то же - вызывают функцию WinAPI MessageBox().Разница в потреблении ресурсов, если таковая имеется, минимальна.Если вам так важно, вы можете вызвать MessageBox() напрямую - просто укажите "использует Windows".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top