Komunikat mapy

Mapa wiadomości kojarzy funkcję obsługi z danej wiadomości, polecenie lub zgłoszenia. Za pomocą ATL's wiadomości mapę makra, można określić mapy wiadomości dla okna. Procedury okna w CWindowImpl, CDialogImpli CContainedWindow bezpośrednio komunikaty okna do jego mapę wiadomości.

Funkcje obsługi wiadomości akceptuje dodatkowy argument typu BOOLamp; . &Argument ten wskazuje, czy wiadomość została przetworzona i ustawiono dla niej TRUE domyślnie. Funkcja obsługi następnie można ustawić argument na FALSE do wskazania, że nie ma obsługi wiadomości. W tym przypadku ATL będzie szukało funkcji obsługi dalsze na mapie wiadomości. Przez ustawienie tego argumentu FALSE , można najpierw wykonać niektóre działania w odpowiedzi na wiadomość, a następnie pozwól przetwarzania domyślne lub inną funkcję obsługi, aby zakończyć, obsługa wiadomości.

ATL umożliwia również do łańcucha wiadomości mapy, który kieruje obsługi do mapy wiadomości zdefiniowane w innej klasy wiadomości. Na przykład można implementować wiadomości wspólnej obsługi w osobnej klasy zapewniające jednolite działanie wszystkich okien wnioskowanie do tej klasy. Można łańcucha klasy bazowej lub członek danych klasy.

ATL obsługuje również dynamiczny łańcuchów, które allows you to łańcuch do innego obiektu wiadomości mapę w czasie wykonywania. Aby zaimplementować, dynamiczne łańcuchów, klasy musi pochodzić od CDynamicChain. Następnie zadeklarować makra CHAIN_MSG_MAP_DYNAMIC na mapie wiadomości. CHAIN_MSG_MAP_DYNAMIC wymaga unikatowy numer, który identyfikuje obiekt i mapę wiadomości, do której są instalacjami. Należy zdefiniować ten unikatową wartość przez wywołanie CDynamicChain::SetChainEntry.

Do klasy, która deklaruje mapy wiadomości można łańcucha, pod warunkiem klasa pochodzi od CMessageMap. CMessageMap pozwala na obiekt, który będzie wystawiać jego mapy wiadomości do innych obiektów. Należy zauważyć, że CWindowImpl już pochodzi od CMessageMap.

Wreszcie ATL obsługuje mapy alternatywnego wiadomości, zadeklarowane z makra ALT_MSG_MAP . Każda mapa alternatywnego wiadomości jest identyfikowany przez unikatowy numer, który przechodzi do ALT_MSG_MAP. Za pomocą alternatywnego wiadomości mapuje, może obsłużyć wiadomości wiele okien w jednej mapie. Należy zauważyć, że domyślnie CWindowImpl nie używać alternatywnej wiadomości mapy. Aby dodać tę obsługę, zastąpić metodę procedury WindowProc w Twojej CWindowImpl-klasy i wywołać ProcessWindowMessage z identyfikatorem mapę wiadomości.

Index