Uso delle finestre contenute

ATL implementa finestre contenute con CContainedWindowT. Una finestra contenuta rappresenta una finestra che delega i messaggi a un oggetto contenitore anziché gestirli nella propria classe.

Nota

Non è necessario derivare una classe da CContainedWindowT per usare le finestre contenute.

Con le finestre contenute, è possibile sovraclassere una classe Windows esistente o una sottoclasse di una finestra esistente. Per creare una finestra che superclassi una classe Windows esistente, specificare innanzitutto il nome della classe esistente nel costruttore per l'oggetto CContainedWindowT . Chiamare CContainedWindowT::Createquindi . Per sottoclassare una finestra esistente, non è necessario specificare un nome di classe di Windows (passare NULL al costruttore). È sufficiente chiamare il CContainedWindowT::SubclassWindow metodo con l'handle alla finestra sottoclassata.

In genere si usano finestre contenute come membri dati di una classe contenitore. Il contenitore non deve essere una finestra; tuttavia, deve derivare da CMessageMap.

Una finestra contenuta può usare mappe messaggi alternative per gestire i messaggi. Se sono presenti più finestre contenute, è necessario dichiarare diverse mappe di messaggi alternative, ognuna corrispondente a una finestra separata contenuta.

Esempio

Di seguito è riportato un esempio di una classe contenitore con due finestre contenute:

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

};

Per altre informazioni sulle finestre contenute, vedere l'esempio SUBEDIT .

Vedi anche

Classi di finestre