MFC ActiveX 컨트롤: 속성 페이지
속성 페이지를 사용하면 ActiveX 컨트롤 사용자가 ActiveX 컨트롤 속성을 보고 변경할 수 있습니다. 이러한 속성은 컨트롤 속성을 보고 편집하기 위한 사용자 지정된 그래픽 인터페이스를 제공하는 하나 이상의 속성 페이지가 포함된 컨트롤 속성 대화 상자를 호출하여 액세스합니다.
Important
ActiveX는 새로운 개발에 사용하지 않아야 하는 레거시 기술입니다. ActiveX를 대체하는 최신 기술에 관한 자세한 내용은 ActiveX 컨트롤을 참조하세요.
ActiveX 컨트롤 속성 페이지는 다음 두 가지 방법으로 표시됩니다.
컨트롤의 속성 동사(OLEIVERB_PROPERTIES)가 호출되면 컨트롤의 속성 페이지가 포함된 모달 속성 대화 상자가 열립니다.
컨테이너는 선택한 컨트롤의 속성 페이지를 표시하는 자체 모덜리스 대화 상자를 표시할 수 있습니다.
속성 대화 상자(다음 그림에 나와 있음)는 현재 속성 페이지를 표시하기 위한 영역, 속성 페이지 간 전환 탭 및 속성 페이지 대화 상자 닫기, 변경 내용 취소 또는 ActiveX 컨트롤에 변경 내용 즉시 적용과 같은 일반적인 작업을 수행하는 단추 컬렉션으로 구성됩니다.
속성 대화 상자
이 문서에서는 ActiveX 컨트롤의 속성 페이지 사용과 관련된 항목을 설명합니다. 다음 범위가 포함됩니다.
ActiveX 컨트롤에서 속성 페이지를 사용하는 방법에 관한 자세한 내용은 다음 문서를 참조하세요.
ActiveX 컨트롤이 아닌 MFC 애플리케이션에서 속성 시트를 사용하는 방법에 대한 자세한 내용은 속성 시트를 참조 하세요.
기본 속성 페이지 구현
ActiveX 컨트롤 마법사를 사용하여 컨트롤 프로젝트를 만드는 경우 ActiveX 컨트롤 마법사는 COlePropertyPage 클래스에서 파생된 컨트롤에 대한 기본 속성 페이지 클래스를 제공합니다. 처음에는 이 속성 페이지가 비어 있지만 대화 상자 컨트롤 또는 컨트롤 집합을 추가할 수 있습니다. ActiveX 컨트롤 마법사는 기본적으로 속성 페이지 클래스를 하나만 만들기 때문에 클래스 뷰를 사용하여 추가 속성 페이지 클래스(파생) COlePropertyPage
를 만들어야 합니다. 이 절차에 대한 자세한 내용은 MFC ActiveX 컨트롤: 다른 사용자 지정 속성 페이지 추가를 참조 하세요.
속성 페이지 구현(이 경우 기본값)은 3단계 프로세스입니다.
속성 페이지를 구현하려면
COlePropertyPage
-derived 클래스를 컨트롤 프로젝트에 추가합니다. ActiveX 컨트롤 마법사를 사용하여 프로젝트를 만든 경우(이 경우와 같이) 기본 속성 페이지 클래스가 이미 있습니다.대화 상자 편집기를 사용하여 속성 페이지 템플릿에 컨트롤을 추가합니다.
DoDataExchange
속성 페이지 컨트롤과 ActiveX 컨트롤 간에 값을 교환하도록 파생 클래스의 함수COlePropertyPage
를 사용자 지정합니다.
예를 들어 다음 절차에서는 간단한 컨트롤("샘플")을 사용합니다. 샘플은 ActiveX 컨트롤 마법사를 사용하여 만들어졌으며 stock Caption 속성만 포함합니다.
속성 페이지에 컨트롤 추가
속성 페이지에 컨트롤을 추가하려면
컨트롤 프로젝트를 열고 리소스 보기를 엽니다.
대화 상자 디렉터리 아이콘을 두 번 클릭합니다.
IDD_PROPPAGE_SAMPLE 대화 상자를 엽니다.
ActiveX 컨트롤 마법사는 프로젝트 이름을 대화 상자 ID의 끝에 추가합니다(이 경우 샘플).
선택한 컨트롤을 도구 상자에서 대화 상자 영역으로 끌어다 놓습니다.
이 예제에서는 텍스트 레이블 컨트롤 "Caption :" 및 IDC_CAPTION 식별자가 있는 편집 상자 컨트롤로 충분합니다.
도구 모음에서 저장을 클릭하여 변경 내용을 저장합니다.
이제 사용자 인터페이스가 수정되었으므로 편집 상자를 Caption 속성과 연결해야 합니다. 이 작업은 함수를 편집하여 다음 섹션에서 수행됩니다 CSamplePropPage::DoDataExchange
.
DoDataExchange 함수 사용자 지정
속성 페이지 CWnd::D oDataExchange 함수를 사용하면 속성 페이지 값을 컨트롤의 실제 속성 값과 연결할 수 있습니다. 링크를 설정하려면 적절한 속성 페이지 필드를 해당 컨트롤 속성에 매핑해야 합니다.
이러한 매핑은 속성 페이지 DDP_ 함수를 사용하여 구현됩니다. DDP_ 함수는 표준 MFC 대화 상자에서 사용되는 DDX_ 함수처럼 작동합니다. 멤버 변수 에 대한 참조 외에도 DDP_ 함수는 컨트롤 속성의 이름을 사용합니다. 다음은 속성 페이지에 대한 함수의 DoDataExchange
일반적인 항목입니다.
DDP_Text(pDX, IDC_CAPTION, m_caption, _T("Caption"));
이 함수는 함수를 사용하여 속성 페이지의 m_캡션 멤버 변수를 Caption과 연결합니다DDP_TEXT
.
속성 페이지 컨트롤을 삽입한 후에는 위에서 설명한 함수를 사용하여 DDP_Text
속성 페이지 컨트롤, IDC_CAPTION 및 실제 컨트롤 속성인 Caption 간에 링크를 설정해야 합니다.
속성 페이지는 검사 상자, 라디오 단추 및 목록 상자와 같은 다른 대화 상자 컨트롤 형식에 사용할 수 있습니다. 아래 표에서는 함수 및 해당 용도에 DDP_ 속성 페이지의 전체 집합을 나열합니다.
속성 페이지 함수
함수 이름 | 이 함수를 사용하여 연결 |
---|---|
DDP_CBIndex |
컨트롤 속성이 있는 콤보 상자에서 선택한 문자열의 인덱스입니다. |
DDP_CBString |
컨트롤 속성이 있는 콤보 상자에서 선택한 문자열입니다. 선택한 문자열은 속성 값과 동일한 문자로 시작할 수 있지만 완전히 일치하지 않아도 됩니다. |
DDP_CBStringExact |
컨트롤 속성이 있는 콤보 상자에서 선택한 문자열입니다. 선택한 문자열과 속성의 문자열 값이 정확히 일치해야 합니다. |
DDP_Check |
컨트롤 속성이 있는 검사 상자입니다. |
DDP_LBIndex |
컨트롤 속성이 있는 목록 상자에서 선택한 문자열의 인덱스입니다. |
DDP_LBString |
컨트롤 속성이 있는 목록 상자에서 선택한 문자열입니다. 선택한 문자열은 속성 값과 동일한 문자로 시작할 수 있지만 완전히 일치하지 않아도 됩니다. |
DDP_LBStringExact |
컨트롤 속성이 있는 목록 상자에서 선택한 문자열입니다. 선택한 문자열과 속성의 문자열 값이 정확히 일치해야 합니다. |
DDP_Radio |
컨트롤 속성이 있는 라디오 단추입니다. |
DDP_Text |
컨트롤 속성이 있는 텍스트입니다. |