Sdílet prostřednictvím


Použití oken obsažených v jiném objektu

ATL implementuje obsažená okna s CContainedWindowT. Obsažené okno představuje okno, které deleguje své zprávy na objekt kontejneru namísto jejich zpracování ve své vlastní třídě.

Poznámka:

Abyste mohli používat obsažená okna, nemusíte odvozovat třídu CContainedWindowT .

S obsaženými okny můžete buď nadtřídět existující třídu Windows, nebo podtřídu existujícího okna. Chcete-li vytvořit okno, které nadtřídí existující třídu Windows, nejprve zadejte název existující třídy v konstruktoru objektu CContainedWindowT . Pak zavolejte CContainedWindowT::Create. Pokud chcete podtřídu existujícího okna, nemusíte zadávat název třídy Systému Windows (předejte konstruktoru null). Jednoduše zavolejte metodu CContainedWindowT::SubclassWindow s popisovačem do podtřídy okna.

Jako datové členy třídy kontejneru obvykle používáte obsažená okna. Kontejner nemusí být okno; však musí být odvozen z CMessageMap.

Obsažené okno může ke zpracování zpráv použít alternativní mapy zpráv. Pokud máte více než jedno okno s obsahem, měli byste deklarovat několik alternativních map zpráv, z nichž každá odpovídá samostatnému obsaženému okně.

Příklad

Následuje příklad třídy kontejneru se dvěma obsaženými okny:

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()

};

Další informace o obsažených oknech najdete v ukázce SUBEDIT .

Viz také

Třídy oken