모덜리스 속성 시트 만들기
일반적으로 만드는 속성 시트는 모달입니다. 모달 속성 시트를 사용하는 경우 사용자는 애플리케이션의 다른 부분을 사용하기 전에 속성 시트를 닫아야 합니다. 이 문서에서는 사용자가 애플리케이션의 다른 부분을 사용하는 동안 속성 시트를 열어 둘 수 있는 모덜리스 속성 시트를 만드는 데 사용할 수 있는 방법을 설명합니다.
속성 시트를 모달 대화 상자 대신 모달 대화 상자로 표시하려면 DoModal 대신 CPropertySheet::Create를 호출합니다. 또한 모덜리스 속성 시트를 지원하려면 몇 가지 추가 작업을 구현해야 합니다.
추가 작업 중 하나는 속성 시트가 열릴 때 수정하는 외부 개체와 속성 시트 간에 데이터를 교환하는 것입니다. 이는 일반적으로 표준 모덜리스 대화 상자와 동일한 작업입니다. 이 작업의 일부는 모덜리스 속성 시트와 속성 설정이 적용되는 외부 개체 간의 통신 채널을 구현하는 것입니다. 이 구현은 모덜리스 속성 시트에 대한 CPropertySheet에서 클래스를 파생하는 경우 훨씬 쉽습니다. 이 문서에서는 사용자가 그렇게 했다고 가정합니다.
모덜리스 속성 시트와 외부 개체(예: 보기의 현재 선택 영역) 간에 통신하는 한 가지 방법은 속성 시트에서 외부 개체로 포인터를 정의하는 것입니다. -derived 클래스에서 CPropertySheet
함수를 SetMyExternalObject
정의하여 포커스가 외부 개체에서 다른 개체로 변경될 때마다 포인터를 변경합니다. 함수는 SetMyExternalObject
새로 선택한 외부 개체를 반영하도록 각 속성 페이지의 설정을 다시 설정해야 합니다. 이렇게 하려면 함수가 SetMyExternalObject
클래스에 속하는 CPropertyPage 개체에 CPropertySheet
액세스할 수 있어야 합니다.
속성 시트 내의 속성 페이지에 대한 액세스를 제공하는 가장 편리한 방법은 -derived CPropertyPage
개체에 개체를 CPropertySheet
포함하는 것입니다. 파생 개체에 CPropertySheet
개체를 CPropertyPage
포함하는 것은 속성 시트 소유자가 개체를 만들고 CPropertyPage
CPropertySheet::AddPage를 통해 속성 시트에 전달하는 모달 대화 상자의 일반적인 디자인과 다릅니다.
모덜리스 속성 시트의 설정을 외부 개체에 적용해야 하는 시기를 결정하기 위한 많은 사용자 인터페이스 대안이 있습니다. 한 가지 대안은 사용자가 값을 변경할 때마다 현재 속성 페이지의 설정을 적용하는 것입니다. 또 다른 대안은 사용자가 속성 페이지의 변경 내용을 외부 개체에 커밋하기 전에 누적할 수 있는 적용 단추를 제공하는 것입니다. 적용 단추를 처리하는 방법에 대한 자세한 내용은 적용 단추 처리 문서를 참조하세요.