Domanda

Nel Delphi ; quali sono le differenze tra Application.MessageBox, Windows.MessageBox o Dialogs.MessageDlg? O che è più efficiente di utilizzare la memoria del computer?

È stato utile?

Soluzione

Windows.MessageBox è il WinAPI MessageBox, Application.MessageBox è un wrapper attorno ad esso. Dialogs.MessageDlg tuttavia è una forma VCL. Quindi, se siete preoccupati per la memoria o la sicurezza dei thread, i primi due potrebbe essere più adatto. MessageDlg OTOH è più flessibile e più facile da usare (IMHO, ovviamente).

Altri suggerimenti

MessageBox di Windows è localizzato da OS (Sì, No, Annulla ...), MessageDlg può essere localizzato a mano.

Perché vi preoccupate per la piccola quantità di memoria utilizzata da una finestra di messaggio? Ci sono molte altre cose che si dovrebbe preoccuparsi delle quando si scrive un'applicazione Delphi. In ogni caso, per quanto io sappia queste sono tutte le sottili involucri attorno l'API di Windows MessageBox.

Se non ricordo male, c'è una distinzione importante bewteen le finestre di messaggio Delphi VCL e quelli di Windows - Puoi specificare le bandiere che si fermano i messaggi applicazione venga manutenzione (ad esempio MB_SYSTEMMODAL). Questo può essere utile per la visualizzazione di errori in cui è necessario 'congelare' l'applicazione - Delphi MessageDlg sarà ancora generare eventi timer anche mentre sullo schermo. Vedi:

roba MessageBox MSDN

L'utilizzo della memoria non dovrebbe essere un problema con le finestre di messaggio. Io personalmente preferisco la forma VCL (Dialogs.MessageBox) dato che posso localizzarlo dall'unità Consts.pas. Mi piace anche il fatto che posso aggiungere controlli personalizzati ad esso, come le caselle di controllo per "non mostrarlo più" e altre cose di questo tipo.

Lo fanno tutti lo stesso - richiamare WinAPI funzione MessageBox (). La differenza di consumo di risorse se esiste è minimo. Se ci tieni così tanto si può chiamare MessageBox () direttamente -. Basta include "usa Windows"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top