Pochodne mapy komunikatów
Podczas wiadomości, obsługi, sprawdzania wiadomości tej klasy Mapa nie jest koniec wątku wiadomości mapy.Co się stanie, jeśli klasa CMyView (pochodzące z CView) ma pasującego wjazdu dla wiadomości?
Należy pamiętać, że CView, klasa podstawowa CMyView, z kolei pochodzi od CWnd.Thus CMyView is a CView and is a CWnd.Każda z tych klas ma własną mapę wiadomość.Rysunek "A wyświetlanie hierarchii" poniżej pokazuje relacje hierarchiczne między klasami, ale nie należy pamiętać, że CMyView obiekt jest pojedynczy obiekt, który posiada cechy wszystkich trzech klas.
Wyświetl hierarchię
Dlatego jeśli wiadomości nie mogą być dopasowane w klasie CMyView's mapę wiadomość, ramach przeszukiwany jest również mapę wiadomość jego natychmiastowego klasy podstawowej.BEGIN_MESSAGE_MAP Makro na początku mapy wiadomości określa dwie nazwy klasy jako argumenty:
BEGIN_MESSAGE_MAP(CMyView, CFormView)
Pierwszy argument nazwy klasy, do której należy dany mapę wiadomość.Drugi argument zapewnia połączenie z bezpośrednim klasy podstawowej — CView w tym miejscu — ramach będzie można znaleźć jego mapę wiadomość zbyt.
Programy obsługi wiadomości w klasie podstawowej zatem są dziedziczone w klasie pochodnej.Jest to bardzo podobna do funkcji normalnym członkiem wirtualnym bez konieczności dokonania wszystkich funkcji elementów członkowskich obsługi wirtualnych.
Jeśli brak obsługi zostanie znaleziony w dowolnej mapy klasa bazowa wiadomość, wykonywane jest domyślnie przetwarzania wiadomości.Jeśli wiadomość jest polecenie, ramach trasy do następnego celu polecenia.Jeśli to standardowy komunikat systemu Windows, wiadomość jest przekazywana do procedury okna odpowiednia ikona domyślna.
Aby przyspieszyć dopasowania mapy wiadomości, ramach buforuje ostatnich dopasowań na prawdopodobieństwo, że to zostanie wyświetlony ten sam komunikat ponownie.Jedną konsekwencją tego jest procesy framework całkiem skutecznie nieobsłużony wiadomości.Mapy wiadomości są również bardziej efektywnym niż implementacje używające funkcji wirtualnych.