참고 사항
ATL(활성 템플릿 라이브러리)은 계속 지원됩니다. 그러나 더 이상 기능을 추가하거나 설명서를 업데이트하지 않습니다.
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 샘플을 참조하세요.