표준 컨트롤에서 컨트롤 파생
마찬가지로 모든 CWnd-클래스, 파생 된 기존 컨트롤 클래스에서 새 클래스를 파생 하 여 컨트롤의 동작을 수정할 수 있습니다.
파생된 컨트롤 클래스를 만들려면
기존 컨트롤 클래스에서 클래스를 파생 하 고 필요에 따라 재정의 만들기 멤버 함수는 기본 클래스에 필요한 인수를 제공 합니다. 만들기 함수.
메시지 맵 엔트리를 특정 Windows 메시지에 응답 하는 컨트롤의 동작을 수정 하 고 메시지 처리기 멤버 함수를 제공 합니다.함수에 메시지 매핑을 참조하십시오.
(선택적 요소) 컨트롤의 기능을 확장 하는 새 멤버 함수를 제공 합니다.
대화 상자에 파생된 컨트롤을 사용 하 여 추가 작업을 수행을 해야 합니다.일반적으로 대화 상자에서 컨트롤의 위치와 형식 대화 상자 템플릿 리소스에 지정 됩니다.파생된 컨트롤 클래스를 만들 경우 리소스 컴파일러가 파생된 클래스에 대 한 아무 것도 알고 있으므로 대화 상자 템플릿에서 지정할 수 없습니다.
대화 상자에 파생된 컨트롤을 배치.
파생된 컨트롤 클래스의 개체를 파생된 대화 상자 클래스의 선언에 포함 합니다.
재정의 OnInitDialog 멤버 함수를 호출 하 여 대화 상자 클래스에는 SubclassDlgItem 멤버 함수 파생된 컨트롤에 대 한.
SubclassDlgItem"하위 동적" 컨트롤 대화 상자 템플릿에서 만든.컨트롤을 동적으로 서브클래싱 되 면 Windows로 후크하고, 자신의 응용 프로그램 내에서 일부 메시지를 처리 하면 나머지 메시지를 Windows에 전달 됩니다.자세한 내용은 SubclassDlgItem 클래스의 멤버 함수 CWnd 에 MFC 참조.다음 예제는 재정의 작성할 수 있습니다 OnInitDialog 호출에 SubclassDlgItem:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
파생된 컨트롤 대화 상자 클래스에 포함 되어 있으므로 대화 상자가 소멸 될 때 소멸 됩니다 대화 상자 생성 될 때 생성 됩니다.이 코드 예제에서는 비교 추가 컨트롤 By 손.