Aracılığıyla paylaş


Kapsanan Pencereler Kullanma

Not

Etkin Şablon Kitaplığı (ATL) desteklenmeye devam eder. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

ATL, CContainedWindowT ile kapsanan pencereler uygular. İçerilen pencere, kendi sınıfında işlemek yerine iletilerini bir kapsayıcı nesneye devreden bir pencereyi temsil eder.

Not

İçerilen pencereleri kullanmak için öğesinden CContainedWindowT bir sınıf türetmeye gerek yoktur.

Kapsanan pencerelerle, var olan bir Windows sınıfının üst sınıfını veya var olan bir pencereyi alt sınıflandırabilirsiniz. Var olan bir Windows sınıfının üst sınıflarını oluşturan bir pencere oluşturmak için CContainedWindowT , önce nesnenin oluşturucusunda var olan sınıf adını belirtin. Ardından CContainedWindowT::Create'yi arayın. Var olan bir pencereyi alt sınıfa almak için bir Windows sınıf adı belirtmeniz gerekmez (oluşturucuya NULL geçirme). Alt sınıf edilen pencerenin tutamacını içeren CContainedWindowT::SubclassWindow yöntemini çağırmanız yeterlidir.

Kapsayıcı sınıfındaki veri üyeleri olarak genellikle kaplanmış pencereler kullanılır. Kapsayıcının bir pencere olması gerekmez; fakat CMessageMap'ten türetilmelidir.

Kapsanan bir pencere, iletilerini işlemek için alternatif ileti eşlemeleri kullanabilir. Birden fazla kapsanan pencereniz varsa, her biri ayrı bir kapsanan pencereye karşılık gelen birkaç alternatif ileti eşlemesi bildirmeniz gerekir.

Örnek

Aşağıda, iki pencere içeren bir kapsayıcı sınıfı örneği verilmiştir:

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

};

Kapsanan pencereler hakkında daha fazla bilgi için bkz . SUBEDIT örneği.

Ayrıca bkz.

Pencere Sınıfları