Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
La libreria Microsoft Foundation Classes (MFC) continua a essere supportata. Tuttavia, non aggiungiamo più funzionalità né aggiorniamo la documentazione.
Durante la gestione dei messaggi, il controllo della mappa messaggi di una classe non è la fine della storia della mappa messaggi. Cosa accade se la classe CMyView (derivata da CView) non dispone di una voce corrispondente per un messaggio?
Tenere presente che CView, la classe base di CMyView, è derivata a sua volta da CWnd. Di conseguenza CMyView, è un CView oggetto e è un oggetto CWnd. Ognuna di queste classi ha una propria mappa messaggi. La figura seguente mostra la relazione gerarchica delle classi, ma tenere presente che un CMyView oggetto è un singolo oggetto con le caratteristiche di tutte e tre le classi.
Gerarchia di visualizzazione
Se non è possibile trovare una corrispondenza di un messaggio nella mappa messaggi della classe CMyView, il framework cerca anche la mappa dei messaggi della relativa classe base immediata. La BEGIN_MESSAGE_MAP macro all'inizio della mappa messaggi specifica due nomi di classe come argomenti:
BEGIN_MESSAGE_MAP(CMyView, CView)
Il primo argomento denomina la classe a cui appartiene la mappa messaggi. Il secondo argomento fornisce una connessione con la classe base immediata, in questo caso CView, in modo che il framework possa cercare anche la mappa dei messaggi.
I gestori di messaggi forniti in una classe base vengono quindi ereditati dalla classe derivata. Questa operazione è molto simile alle normali funzioni membro virtuali senza dover rendere virtuali tutte le funzioni membro del gestore.
Se non viene trovato alcun gestore in una delle mappe messaggi della classe base, viene eseguita l'elaborazione predefinita del messaggio. Se il messaggio è un comando, il framework lo indirizza alla destinazione del comando successiva. Se si tratta di un messaggio di Windows standard, il messaggio viene passato alla routine di finestra predefinita appropriata.
Per velocizzare la corrispondenza della mappa messaggi, il framework memorizza nella cache le corrispondenze recenti basandosi sulla probabilità di ricevere nuovamente lo stesso messaggio. Una conseguenza di questo è che il framework elabora i messaggi non gestiti in modo abbastanza efficiente. Le mappe messaggi sono anche più efficienti in termini di spazio rispetto alle implementazioni che usano funzioni virtuali.