Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta klasa udostępnia metody obsługujące dynamiczne tworzenie łańcuchów map komunikatów.
Ważne
Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
Składnia
class CDynamicChain
Elementy członkowskie
Konstruktory publiczne
| Nazwa/nazwisko | opis |
|---|---|
| CDynamicChain::CDynamicChain | Konstruktor. |
| CDynamicChain::~CDynamicChain | Destruktora. |
Metody publiczne
| Nazwa/nazwisko | opis |
|---|---|
| CDynamicChain::CallChain | Kieruje komunikat systemu Windows do mapy komunikatów innego obiektu. |
| CDynamicChain::RemoveChainEntry | Usuwa wpis mapy komunikatów z kolekcji. |
| CDynamicChain::SetChainEntry | Dodaje wpis mapy komunikatów do kolekcji lub modyfikuje istniejący wpis. |
Uwagi
CDynamicChain zarządza kolekcją map komunikatów, umożliwiając przekierowanie komunikatu systemu Windows w czasie wykonywania do mapy komunikatów innego obiektu.
Aby dodać obsługę dynamicznego tworzenia łańcuchów map komunikatów, wykonaj następujące czynności:
Utwórz klasę na podstawie
CDynamicChainklasy . Na mapie komunikatów określ makro CHAIN_MSG_MAP_DYNAMIC , aby połączyć łańcuch z domyślną mapą komunikatów innego obiektu.Utwórz każdą klasę, do której chcesz utworzyć łańcuch z obiektu CMessageMap.
CMessageMapumożliwia obiektowi uwidocznienie mapowania komunikatów na inne obiekty.Wywołaj metodę
CDynamicChain::SetChainEntryw celu zidentyfikowania obiektu i mapowania komunikatów, do których chcesz utworzyć łańcuch.
Załóżmy na przykład, że klasa jest zdefiniowana w następujący sposób:
class CMyChainWnd : public CWindowImpl<CMyChainWnd>,
public CDynamicChain
{
public:
CMyChainWnd() {}
BEGIN_MSG_MAP(CMyChainWnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
// dynamically chain to the default
// message map in another object
CHAIN_MSG_MAP_DYNAMIC(1313)
// '1313' identifies the object
// and the message map that will be
// chained to. '1313' is defined
// through the SetChainEntry method
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
// Do some painting code
return 0;
}
LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Następnie klient wywołuje polecenie CMyWindow::SetChainEntry:
myCtl.SetChainEntry(1313, &chainedObj);
gdzie chainedObj jest obiektem łańcuchowym i jest wystąpieniem klasy pochodzącej z CMessageMapklasy . myCtl Jeśli teraz otrzyma komunikat, który nie jest obsługiwany przez OnPaint program lub OnSetFocus, procedura okna przekierowuje komunikat do chainedObjdomyślnej mapy komunikatów.
Aby uzyskać więcej informacji na temat tworzenia łańcuchów map komunikatów, zobacz Mapy komunikatów w artykule "Klasy okien ATL".
Wymagania
Nagłówek: atlwin.h
CDynamicChain::CallChain
Kieruje komunikat systemu Windows do mapy komunikatów innego obiektu.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
Parametry
dwChainID
[in] Unikatowy identyfikator skojarzony z obiektem łańcuchowym i mapą komunikatów.
hWnd
[in] Uchwyt do okna odbierającego komunikat.
uMsg
[in] Wiadomość wysłana do okna.
wParam
[in] Dodatkowe informacje specyficzne dla komunikatów.
lParam
[in] Dodatkowe informacje specyficzne dla komunikatów.
lResult
[out] Wynik przetwarzania komunikatów.
Wartość zwracana
WARTOŚĆ TRUE, jeśli komunikat jest w pełni przetwarzany; w przeciwnym razie, FAŁSZ.
Uwagi
Aby procedura okna wywoływana CallChainprzez program , należy określić makro CHAIN_MSG_MAP_DYNAMIC na mapie komunikatów. Aby zapoznać się z przykładem, zobacz omówienie narzędzia CDynamicChain .
CallChain wymaga poprzedniego wywołania polecenia SetChainEntry w celu skojarzenia wartości dwChainID z obiektem i mapą komunikatów.
CDynamicChain::CDynamicChain
Konstruktor.
CDynamicChain();
CDynamicChain::~CDynamicChain
Destruktora.
~CDynamicChain();
Uwagi
Zwalnia wszystkie przydzielone zasoby.
CDynamicChain::RemoveChainEntry
Usuwa mapę określonego komunikatu z kolekcji.
BOOL RemoveChainEntry(DWORD dwChainID);
Parametry
dwChainID
[in] Unikatowy identyfikator skojarzony z obiektem łańcuchowym i mapą komunikatów. Ta wartość została pierwotnie zdefiniowana za pomocą wywołania metody SetChainEntry.
Wartość zwracana
Wartość TRUE, jeśli mapa komunikatów została pomyślnie usunięta z kolekcji. W przeciwnym razie zwraca wartość FALSE.
CDynamicChain::SetChainEntry
Dodaje mapę określonego komunikatu do kolekcji.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
Parametry
dwChainID
[in] Unikatowy identyfikator skojarzony z obiektem łańcuchowym i mapą komunikatów.
pObject
[in] Wskaźnik do obiektu łańcuchowego deklarujący mapę komunikatów. Ten obiekt musi pochodzić z obiektu CMessageMap.
dwMsgMapID
[in] Identyfikator mapy komunikatów w obiekcie łańcuchowym. Wartość domyślna to 0, która identyfikuje domyślną mapę komunikatów zadeklarowaną za pomocą BEGIN_MSG_MAP. Aby określić alternatywną mapę komunikatów zadeklarowaną za pomocą ALT_MSG_MAP(msgMapID),przekaż .msgMapID
Wartość zwracana
Wartość TRUE, jeśli mapa komunikatów została pomyślnie dodana do kolekcji. W przeciwnym razie zwraca wartość FALSE.
Uwagi
Jeśli wartość dwChainID już istnieje w kolekcji, skojarzony z nią obiekt i mapa komunikatów są zastępowane odpowiednio przez pObject i dwMsgMapID. W przeciwnym razie zostanie dodany nowy wpis.