다음을 통해 공유


MFC ActiveX 컨트롤: 고급 속성 구현

이 문서에서는 ActiveX 컨트롤에서 고급 속성 구현과 관련된 항목을 설명합니다.

Important

ActiveX는 새로운 개발에 사용하지 않아야 하는 레거시 기술입니다. ActiveX를 대체하는 최신 기술에 관한 자세한 내용은 ActiveX 컨트롤을 참조하세요.

읽기 전용 및 쓰기 전용 속성

속성 추가 마법사는 컨트롤에 대한 읽기 전용 또는 쓰기 전용 속성을 구현하는 빠르고 쉬운 메서드를 제공합니다.

읽기 전용 또는 쓰기 전용 속성을 구현하려면

  1. 컨트롤의 프로젝트를 로드합니다.

  2. 클래스 뷰에서 컨트롤의 라이브러리 노드를 확장합니다.

  3. 컨트롤의 인터페이스 노드(라이브러리 노드의 두 번째 노드)를 마우스 오른쪽 단추로 클릭하여 바로 가기 메뉴를 엽니다.

  4. 바로 가기 메뉴에서 추가를 클릭한 다음, 속성 추가를 클릭합니다.

    그러면 속성 추가 마법사가 열립니다.

  5. 속성 이름 상자에 속성의 이름을 입력합니다.

  6. 구현 형식에서 Get/Set 메서드를 클릭합니다.

  7. 속성 형식 상자에서 속성에 대한 적절한 형식을 선택합니다.

  8. 읽기 전용 속성을 원하는 경우 Set 함수 이름을 지웁다. 쓰기 전용 속성을 원하는 경우 Get 함수 이름을 지웁니다.

  9. Finish를 클릭합니다.

이렇게 하면 속성 추가 마법사가 함수를 삽입하거나 일반 Set 또는 GetNotSupported Get 함수 SetNotSupported 대신 디스패치 맵 항목에 삽입합니다.

기존 속성을 읽기 전용 또는 쓰기 전용으로 변경하려면 디스패치 맵을 수동으로 편집하고 컨트롤 클래스에서 불필요한 Set 또는 Get 함수를 제거할 수 있습니다.

속성을 조건부로 읽기 전용 또는 쓰기 전용으로 설정하려는 경우(예: 컨트롤이 특정 모드에서 작동하는 경우에만) Set 또는 Get 함수를 정상적으로 제공하고 적절한 경우 또는 GetNotSupported 함수를 SetNotSupported 호출할 수 있습니다. 예시:

void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   if (m_bReadOnlyMode)   //  some control-specific state
   {
      SetNotSupported();
   }
   else
   {
      m_iPropVal = newVal;   //  set property as normal
      SetModifiedFlag();
   }
}

이 코드 샘플은 데이터 멤버가 m_bReadOnlyMode TRUE인 경우 호출 SetNotSupported 합니다. FALSE이면 속성이 새 값으로 설정됩니다.

속성에서 오류 코드 반환

속성을 얻거나 설정하는 동안 오류가 발생했음을 나타내려면 SCODE(상태 코드)를 매개 변수로 사용하는 함수를 사용합니다COleControl::ThrowError. 미리 정의된 SCODE를 사용하거나 사용자 고유의 SCODE를 정의할 수 있습니다. 미리 정의된 SCODE 목록 및 사용자 지정 SCOD를 정의하기 위한 지침은 ActiveX 컨트롤: 고급 항목 문서의 ActiveX 컨트롤에서 오류 처리를 참조하세요.

COleControl::SetNotSupported, COleControl::GetNotSupported 및 COleControl::SetNotPermitted와 같은 가장 일반적인 미리 정의된 SCODE에 대한 도우미 함수가 있습니다.

참고 항목

ThrowError 는 속성의 Get 또는 Set 함수 또는 자동화 메서드 내에서 오류를 반환하는 수단으로만 사용됩니다. 적절한 예외 처리기가 스택에 있는 유일한 시간입니다.

코드의 다른 영역에서 예외를 보고하는 방법에 대한 자세한 내용은 ActiveX 컨트롤: 고급 항목 문서에서 COleControl::FireError 및 ActiveX 컨트롤의 오류 처리 섹션을 참조하세요.

참고 항목

MFC ActiveX 컨트롤
MFC ActiveX 컨트롤: 속성
MFC ActiveX 컨트롤: 메서드
COleControl 클래스