Pergunta

Em Delphi ; quais são as diferenças entre Application.MessageBox, Windows.MessageBox ou Dialogs.MessageDlg? Ou que é mais eficiente para a memória uso do computador?

Foi útil?

Solução

Windows.MessageBox é o WinAPI MessageBox, Application.MessageBox é um invólucro em torno dele. Dialogs.MessageDlg no entanto é uma forma de VCL. Então, se você está preocupado com memória ou segurança de uma discussão, os dois primeiros poderia ser mais adequado. MessageDlg OTOH é mais flexível e mais fácil de usar (IMHO, é claro).

Outras dicas

Windows MessageBox é localizada por OS (sim, não, cancelar ...), MessageDlg pode ser localizado com a mão.

Por que você se preocupa com a pequena quantidade de memória usada por uma caixa de mensagem? Há muitas outras coisas que você deve ser relativas a si mesmo com ao escrever um aplicativo de Delphi. Em qualquer caso, tanto quanto eu estou ciente estes são todos os invólucros finos em torno da API do Windows MessageBox.

Se bem me lembro, há uma distinção importante bewteen as caixas de mensagens Delphi VCL e os do Windows - você pode especificar bandeiras que param as mensagens aplicação seja atendida (por exemplo MB_SYSTEMMODAL). Isto pode ser útil para a exibição de erros que você precisa para 'congelar' sua aplicação - a Delphi MessageDlg AINDA eventos timer fogo mesmo, enquanto na tela. Veja:

coisas MSDN MessageBox

uso

A memória não deve ser um problema com caixas de mensagem. Eu pessoalmente prefiro a forma VCL (Dialogs.MessageBox) desde que eu posso localizá-lo a partir da unidade Consts.pas. Eu também gosto lo a partir do fato de que eu posso adicionar controles personalizados para ele, como caixas de seleção para "não mostrar esta mensagem novamente" e outras coisas como esta.

Eles todos fazem o mesmo - invocação de função WinAPI MessageBox (). A diferença no consumo de recursos se for o caso é mínima. Se você se importa tanto que você pode chamar MessageBox () diretamente -. Incluir apenas "usa Windows"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top