MFC 컨트롤을 ActiveX: 사용자 지정 속성을 추가합니다.
사용자 지정 속성 다 스톡 속성에서 사용자 지정 속성으로 아직 구현 되지 않은 있다는 점에서 COleControl 클래스입니다.사용자 지정 속성을 특정 상태 또는 컨트롤을 사용 하는 프로그래머는 ActiveX 컨트롤의 모양을 제공 하는 데 사용 됩니다.
이 문서에서는 속성 추가 마법사를 사용 하 여 ActiveX 컨트롤에 사용자 지정 속성을 추가 하는 방법에 설명 및 결과 코드의 수정 사항에 설명 합니다.다음 내용을 다룹니다.
속성 추가 마법사를 사용 하 여 사용자 지정 속성을 추가 하려면
마법사 속성 변경의 사용자 지정 속성을 추가 합니다.
사용자 지정 속성 구현의 네 가지가 구현에서: 멤버 변수, 알림, Get/Set 메서드 및 매개 변수화 된 멤버 변수입니다.
멤버 변수 구현
이 구현은 해당 컨트롤 클래스의 멤버 변수로 속성의 상태를 나타냅니다.멤버 변수 구현은 사용 하 여 속성 값이 변경 될 때 알아야 하는 중요 하지 않습니다.세 가지 유형의이 구현 최소한의 지원 코드용 속성을 만듭니다.멤버 변수 구현에 대 한 디스패치 맵 엔트리 매크로 DISP_PROPERTY.
멤버 변수와 알림 구현
이 구현은 멤버 변수와 알림 함수로 속성 추가 마법사에서 만든 구성 됩니다.자동으로 알림 함수는 속성 값이 변경 프레임 워크에서 라고 합니다.멤버 변수 알림 구현은 속성 값이 변경 된 경우 알림을 받아야 할 때 사용 합니다.따라서 함수 호출 해야 하기 때문에이 구현은 시간이 더 걸립니다.이 구현에 대 한 디스패치 맵 엔트리 매크로 DISP_PROPERTY_NOTIFY.
Get/Set 메서드 구현
이 구현은 해당 컨트롤 클래스의 멤버 함수 쌍으로 구성 됩니다.사용자 컨트롤의 속성을 변경 하는 것을 요청 하는 경우 Get/Set 메서드 구현을 자동으로 Get 멤버 컨트롤 사용자 속성의 현재 값을 요청 하는 경우 함수 및 Set 멤버 함수를 호출 합니다.하면 필요한 런타임 동안 속성의 값을 계산 합니다 실제 속성을 변경 하기 전에 컨트롤의 사용자가 전달한 값을 확인 되거나 읽기 또는 쓰기 전용 속성 형식을 구현이 구현을 사용 하십시오.이 구현에 대 한 디스패치 맵 엔트리 매크로 DISP_PROPERTY_EX.다음 섹션에서 사용자 지정 속성을 추가 하려면 속성 추가 마법사를 사용 하 여, 사용자 지정 CircleOffset 속성을 사용 하 여이 구현을 보여 줍니다.
매개 변수화 된 구현
매개 변수화 된 구현은 속성 추가 마법사가 지원 됩니다.매개 변수화 된 속성 (속성 배열이 라고도 함) 값 집합에 컨트롤의 단일 속성을 통해 액세스를 사용할 수 있습니다.이 구현에 대 한 디스패치 맵 엔트리 매크로 DISP_PROPERTY_PARAM.이 형식을 구현에 대 한 자세한 내용은 매개 변수가 있는 속성을 구현할 ActiveX 컨트롤의 문서: 고급 항목입니다.
사용 하는 사용자 지정 속성을 추가 하려면 속성 추가 마법사
다음은 사용자 지정 구현 Get/Set 메서드를 사용 하는 CircleOffset 속성을 추가 하는 방법을 보여 줍니다.사용자 지정 CircleOffset 속성에는 컨트롤 사용자를 컨트롤의 경계 사각형의 중심에서 원을 오프셋할 수 있습니다.Get/Set 메서드 이외의 다른 구현으로 사용자 지정 속성을 추가 하는 절차는 매우 유사 합니다.
원하는 다른 사용자 지정 속성을 추가 하려면이 절차를 사용할 수도 있습니다.CircleOffset 속성 이름 및 매개 변수를 사용자 지정 속성 이름으로 대체 합니다.
사용자 속성 추가 마법사를 사용 하 여 지정 CircleOffset 속성을 추가 하려면
컨트롤의 프로젝트를 로드 합니다.
클래스 뷰에서 컨트롤의 라이브러리 노드를 확장 합니다.
(두 번째 라이브러리 노드 노드) 컨트롤 인터페이스 노드를 마우스 오른쪽 단추로 바로 가기 메뉴를 엽니다.
바로 가기 메뉴에서 클릭 추가 누른 다음 속성 추가.
이 열은 속성 추가 마법사.
에 속성 이름 상자에 입력 CircleOffset.
에 대 한 형식 구현를 클릭 Get/Set 메서드.
에 속성 형식 상자에서 짧은.
Get 및 Set 함수에 대 한 고유 이름을 입력 하거나 기본 이름을 적용 합니다.
마침을 클릭합니다.
속성 추가 마법사에서 변경에 대 한 사용자 지정 속성
사용자 지정 CircleOffset 속성을 추가 하면 속성 추가 마법사는 헤더를 변경 (.구현 및 H) (.컨트롤 클래스의 CPP) 파일입니다.
다음 줄에 추가 되는.라는 두 개의 함수를 선언 하는 H 파일 GetCircleOffset 및 SetCircleOffset:
SHORT GetCircleOffset(void);
void SetCircleOffset(SHORT newVal);
다음 줄을 컨트롤에 추가 됩니다.IDL 파일:
[id(2), helpstring("property CircleOffset")] SHORT CircleOffset;
[id(3), helpstring("property MyProperty")] SHORT MyProperty;
이 줄 CircleOffset 속성 찍은 메서드의 위치 속성 추가 마법사에서 메서드 및 속성 목록에 특정 ID 번호를 할당 합니다.
디스패치 맵에 다음 줄이 추가 됩니다 또한 (에 해당 합니다.컨트롤 클래스의 cpp) CircleOffset 속성을 컨트롤의 두 가지 처리기 함수에 매핑할.
DISP_PROPERTY_EX_ID(CMyAxUICtrl, "CircleOffset", dispidCircleOffset, GetCircleOffset, SetCircleOffset, VT_I2)
마지막으로의 구현에 GetCircleOffset 및 SetCircleOffset 함수는 컨트롤의 끝에 추가 됩니다.CPP 파일입니다.대부분의 경우이 속성의 값을 반환 하도록 Get 함수를 수정 합니다.Set 함수는 일반적으로 속성 변경 전후에 실행 해야 하는 코드가 포함 됩니다.
void CMyAxUICtrl::SetCircleOffset(SHORT /*newVal*/)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your property handler code here
SetModifiedFlag();
}
속성 추가 마법사 자동으로 대 한 호출을 추가 하는 참고 SetModifiedFlag, Set 함수 본문에.이 함수를 호출 하는 컨트롤 수정 된 것으로 표시 합니다.컨트롤이 수정 된 경우 해당 컨테이너가 저장 될 때는 새 상태로 저장 됩니다.영구 상태를 컨트롤의 일부로 저장 된 속성 값이 변경 될 때마다이 함수를 호출 해야 합니다.