다음을 통해 공유


모덜리스 속성 시트 만들기

일반적으로 생성하는 속성 시트는 모달 방식입니다. 모달 속성 시트를 사용하는 경우 사용자는 애플리케이션의 다른 부분을 사용하기 전에 속성 시트를 닫아야 합니다. 이 문서에서는 사용자가 애플리케이션의 다른 부분을 사용하는 동안 속성 시트를 열어 둘 수 있는 모덜리스 속성 시트를 만드는 데 사용할 수 있는 방법을 설명합니다.

속성 시트를 모달 대화 상자가 아닌 모델리스 대화 상자로 표시하려면 DoModal 대신 CPropertySheet::Create를 호출합니다. 또한 모덜리스 속성 시트를 지원하려면 몇 가지 추가 작업을 구현해야 합니다.

추가 작업 중 하나는 속성 시트가 열릴 때 수정하는 외부 개체와 속성 시트 간에 데이터를 교환하는 것입니다. 이는 일반적으로 표준 모덜리스 대화 상자와 동일한 작업입니다. 이 작업의 일부는 모덜리스 속성 시트와 속성 설정이 적용되는 외부 개체 간의 통신 채널을 구현하는 것입니다. 이 구현은 모덜리스 속성 시트에 대한 CPropertySheet 에서 클래스를 파생하는 경우 훨씬 쉽습니다. 이 문서에서는 사용자가 그렇게 했다고 가정합니다.

모덜리스 속성 시트와 외부 개체(예: 보기의 현재 선택 영역) 간에 통신하는 한 가지 방법은 속성 시트에서 외부 개체로 포인터를 정의하는 것입니다. SetMyExternalObject에서 파생된 클래스에 CPropertySheet라는 함수를 정의하여 포커스가 한 외부 객체에서 다른 객체로 변경될 때마다 포인터를 변경할 수 있도록 합니다. 함수는 SetMyExternalObject 새로 선택한 외부 개체를 반영하도록 각 속성 페이지의 설정을 다시 설정해야 합니다. 이렇게 하려면 함수가 SetMyExternalObject 클래스에 속하는 CPropertyPage 개체에 CPropertySheet 액세스할 수 있어야 합니다.

속성 시트 내의 속성 페이지에 대한 액세스를 제공하는 가장 편리한 방법은 CPropertyPage에서 유래된 CPropertySheet 개체를 포함하는 것입니다. 파생된 개체 내에 CPropertyPage 개체를 CPropertySheet 포함하는 것은, 속성 시트의 소유자가 CPropertyPage 개체를 생성하고 CPropertySheet::AddPage를 통해 속성 시트로 전달하는 일반적인 모달 대화 상자의 디자인과 차이가 있습니다.

모덜리스 속성 시트의 설정을 외부 개체에 적용해야 하는 시기를 결정하기 위한 많은 사용자 인터페이스 대안이 있습니다. 한 가지 대안은 사용자가 값을 변경할 때마다 현재 속성 페이지의 설정을 적용하는 것입니다. 또 다른 대안은 사용자가 속성 페이지의 변경 내용을 외부 개체에 커밋하기 전에 누적할 수 있는 적용 단추를 제공하는 것입니다. 적용 단추를 처리하는 방법에 대한 자세한 내용은 적용 단추 처리 문서를 참조하세요.

참고하십시오

속성 시트
데이터 교환
MFC에서 대화 상자 작업