Udostępnij za pośrednictwem


Używanie okien zawartych

AtL implementuje zawarte okna z CContainedWindowT. Zawarte okno reprezentuje okno, które deleguje komunikaty do obiektu kontenera zamiast obsługiwać je we własnej klasie.

Uwaga

Nie trzeba pobierać klasy z CContainedWindowT klasy w celu używania zawartych okien.

W przypadku zawartych okien można zastąpić istniejącą klasę systemu Windows lub podklasę istniejącego okna. Aby utworzyć okno, które klasy superklasuje istniejącą klasę systemu Windows, najpierw określ istniejącą nazwę klasy w konstruktorze CContainedWindowT dla obiektu. Następnie wywołaj metodę CContainedWindowT::Create. Aby podklasować istniejące okno, nie trzeba określać nazwy klasy systemu Windows (przekazać wartość NULL do konstruktora). Po prostu wywołaj metodę CContainedWindowT::SubclassWindow za pomocą uchwytu do podklasy okna.

Zazwyczaj używane są zawarte okna jako składowe danych klasy kontenera. Kontener nie musi być oknem; jednak musi pochodzić z CMessageMap.

Zawarte okno może używać alternatywnych map komunikatów do obsługi komunikatów. Jeśli masz więcej niż jedno zawarte okno, należy zadeklarować kilka alternatywnych map komunikatów, z których każda odpowiada oddzielnemu zawartemu oknie.

Przykład

Oto przykład klasy kontenera z dwoma zawartymi oknami:

class CMyContainer : public CMessageMap
{
public:
   CContainedWindow m_wndEdit;
   CContainedWindow m_wndList;

   CMyContainer() : m_wndEdit(_T("Edit"), this, 1), 
                    m_wndList(_T("List"), this, 2)
   {
   }

   BEGIN_MSG_MAP(CMyContainer)
   ALT_MSG_MAP(1)
      // handlers for the Edit window go here
   ALT_MSG_MAP(2)
      // handlers for the List window go here
   END_MSG_MAP()

};

Aby uzyskać więcej informacji na temat zawartych okien, zobacz przykład SUBEDIT .

Zobacz też

Klasy okien