포함된 창 사용

ATL은 CContainedWindowT를 사용하여 포함된 창을 구현합니다. 포함된 창은 메시지를 자체 클래스에서 처리하는 대신 컨테이너 개체에 위임하는 창을 나타냅니다.

참고 항목

포함된 창을 사용하기 위해 클래스 CContainedWindowT 를 파생시킬 필요가 없습니다.

포함된 창을 사용하면 기존 Windows 클래스를 슈퍼 클래스로 만들거나 기존 창을 서브클래싱할 수 있습니다. 기존 Windows 클래스를 슈퍼 클래스하는 창을 만들려면 먼저 개체의 생성자 CContainedWindowT 에서 기존 클래스 이름을 지정합니다. 그런 다음, .를 호출합니다 CContainedWindowT::Create. 기존 창을 서브클래싱하려면 Windows 클래스 이름을 지정할 필요가 없습니다(생성자에 NULL 전달). 서브클래스되는 창에 대한 핸들을 사용하여 메서드를 호출 CContainedWindowT::SubclassWindow 하기만 하면 됩니다.

일반적으로 컨테이너 클래스의 데이터 멤버로 포함된 창을 사용합니다. 컨테이너는 창일 필요가 없습니다. 그러나 CMessageMap에서 파생되어야 합니다.

포함된 창은 대체 메시지 맵을 사용하여 메시지를 처리할 수 있습니다. 포함된 창이 두 개 이상 있는 경우 각각 별도의 포함된 창에 해당하는 여러 대체 메시지 맵을 선언해야 합니다.

예시

다음은 두 개의 포함된 창이 있는 컨테이너 클래스의 예입니다.

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

};

포함된 창에 대한 자세한 내용은 SUBEDIT 샘플을 참조하세요.

참고 항목

창 클래스