Partilhar via


Utilização de Janelas Confinadas

ATL implementa janelas contidas com CContainedWindowT. Uma janela contida representa uma janela que delega suas mensagens a um objeto de contêiner em vez de manipulá-las em sua própria classe.

Observação

Você não precisa derivar uma classe de CContainedWindowT para usar janelas contidas.

Com janelas contidas, você pode superclassificar uma classe existente do Windows ou subclassificar uma janela existente. Para criar uma janela que superclassifique uma classe existente do Windows, primeiro especifique o nome da classe existente no construtor do CContainedWindowT objeto. Em seguida, ligue para CContainedWindowT::Create. Para subclassificar uma janela existente, você não precisa especificar um nome de classe do Windows (passe NULL para o construtor). Basta chamar o CContainedWindowT::SubclassWindow método com o identificador para a janela que está sendo subclassificada.

Normalmente, você usa janelas contidas como membros de dados de uma classe de contêiner. O recipiente não precisa ser uma janela; no entanto, deve derivar do CMessageMap.

Uma janela contida pode usar mapas de mensagens alternativos para lidar com suas mensagens. Se você tiver mais de uma janela contida, deverá declarar vários mapas de mensagens alternativos, cada um correspondendo a uma janela contida separada.

Exemplo

A seguir está um exemplo de uma classe de contêiner com duas janelas contidas:

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

};

Para obter mais informações sobre janelas contidas, consulte o exemplo SUBEDIT .

Ver também

Classes de janela