MFC 컨트롤을 ActiveX
ActiveX 컨트롤은 광범위한 OLE 기능을 지원하고 다양한 소프트웨어의 요구 사항에 맞게 사용자 지정할 수 있는 COM(구성 요소 개체 모델) 기반의 다시 사용 가능한 소프트웨어 구성 요소입니다.ActiveX 컨트롤은 일반 ActiveX 컨트롤 컨테이너와 인터넷, World Wide Web 페이지에 사용 하기 위해 설계 되었습니다.MFC, 또는 여기에 설명 된 ActiveX 컨트롤을 만들 수 있는 ATL (액티브 템플릿 라이브러리).
ActiveX 컨트롤은 자신을 그릴 수 있습니다 자체 창에서 이벤트 (예: 마우스 클릭)에 응답 하 고 비슷한 자동화 개체의 메서드와 속성을 포함 하는 인터페이스를 통해 관리할 수 있습니다.
이러한 컨트롤의 데이터베이스 액세스와 같은 여러 가지 용도로 데이터 모니터링 또는 그래프 개발할 수 있습니다.이식성 외에 ActiveX 컨트롤 기능을 이전에 사용할 수 없음 호환성을 기존 OLE 컨테이너 및 OLE 컨테이너 메뉴와 해당 메뉴를 통합할 수 ActiveX 컨트롤을 지원 합니다.뿐만 아니라, ActiveX 컨트롤을 완전히 읽기/쓰기 속성과 컨트롤 사용자가 호출할 수 있는 메서드 집합을 노출 하는 컨트롤을 허용 하는 자동화를 지원 합니다.
ActiveX 창 없는 컨트롤과 활성화 될 때만 창을 만드는 컨트롤을 만들 수 있습니다.창 없는 컨트롤은 응용 프로그램의 표시 속도 향상 및 투명 하 고 사각형 모양이 아닌 컨트롤이 포함 될 수 있도록 합니다.ActiveX 컨트롤 속성을 비동기적으로 로드할 수도 있습니다.
ActiveX 컨트롤은 모든 OLE 컨테이너에서 사용할 수 있는 in-process 서버 (대개 작은 개체)로 구현 됩니다.Note ActiveX 컨트롤의 전체 기능 ActiveX 컨트롤을 인식할 수 있도록 하는 OLE 컨테이너 내에서 사용 될 때만 사용할 수 있습니다.참조 포트 ActiveX 컨트롤을 다른 응용 프로그램 ActiveX 컨트롤을 지 원하는 컨테이너 목록을 합니다.라 "컨트롤 컨테이너" 라고이 컨테이너 형식 ActiveX 컨트롤은 컨트롤의 속성 및 메서드를 사용 하 여 작동할 수 및 ActiveX 컨트롤 폼의 이벤트에서 많은 알림을 받습니다.다음 그림은이 상호 작용을 보여 줍니다.
ActiveX 컨트롤 컨테이너와 창 있는 ActiveX 컨트롤 간의 상호 작용
ActiveX 컨트롤을 최적화 일부 최신 정보를 참조 하십시오. ActiveX 컨트롤 MFC: 최적화.
ActiveX MFC 컨트롤을 작성 하려면를 참조 하십시오 ActiveX 컨트롤 프로젝트 만들기.
자세한 내용은 다음을 참조하십시오.
ActiveX 컨트롤의 기본 구성 요소
ActiveX 컨트롤은 몇 가지 프로그래밍 요소를 사용 하 여 효율적으로 컨트롤 컨테이너와 사용자의 상호 작용.이 클래스는 COleControl, 이벤트 발생 함수의 집합 및 디스패치 맵.
강력한 기능 집합을 개발 하는 모든 ActiveX 컨트롤 개체를 MFC 기본 클래스에서 상속 COleControl.이러한 기능에는 현재 위치에서 활성화 및 자동화 논리가 포함 됩니다.COleControl컨트롤 개체는 MFC 창 개체와 이벤트를 발생 시킬 수 있는 동일한 기능을 제공할 수 있습니다.COleControl제공할 수도 있습니다 창 없는 컨트롤는 해당 컨테이너의 기능 중 일부에 대 한 도움말 창 사용을 제공 (마우스 캡처, 키보드 포커스가 스크롤), 하지만 훨씬 빠른 표시를 제공 합니다.
Control 클래스에서 파생 되므로 COleControl, 보낼 수 있는 기능이 상속 또는 "화재," 메시지를 특정 조건이 충족 될 경우 컨트롤 컨테이너 이벤트를 호출 합니다.이러한 이벤트는 뭔가 때 중요 한 컨트롤 컨테이너 컨트롤에서 수행 되는 작업을 알리기 위해 사용 됩니다.매개 변수는 이벤트에 연결 하 여 컨테이너에 컨트롤 이벤트에 대 한 추가 정보를 보낼 수 있습니다.ActiveX 컨트롤 이벤트에 대 한 자세한 내용은 ActiveX 컨트롤 MFC: 이벤트.
마지막 요소인 디스패치 맵은 함수 (메서드라고 함) 및 특성 (속성 이라고 함)을 컨트롤 사용자에 게 노출 하는 데 사용 됩니다.속성은 컨트롤 컨테이너 또는 컨트롤 사용자 컨트롤에서 다양 한 방법으로 조작할 수 있습니다.사용자 컨트롤의 모양 변경, 특정 컨트롤의 값을 변경 하거나 컨트롤을 유지 하는 데이터의 특정 부분에 액세스 하는 것과 같은 컨트롤의 요청을 수 있습니다.이 인터페이스는 컨트롤 개발자에 의해 결정 및 사용 하 여 정의 된 클래스 뷰.ActiveX 컨트롤 메서드 및 속성에 대 한 자세한 내용은 문서를 참조 하십시오. ActiveX 컨트롤 MFC: 메서드 및 속성.
Windows 컨트롤과 ActiveX 컨트롤 컨테이너 사이의 상호 작용
컨트롤 컨테이너 내의 컨트롤을 사용 하는 경우 두 메커니즘 통신 사용: 메서드와 속성을 노출 하 고 이벤트를 발생 시킵니다.다음 그림이 두 가지 메커니즘의 구현 방법을 보여 줍니다.
ActiveX 컨트롤 컨테이너와 ActiveX 컨트롤 간의 통신
위 그림에서는 또한 다른 OLE 인터페이스 (자동화 이벤트 외) 컨트롤에 의해 처리 되는 방법을 보여 줍니다.
모든 컨테이너 컨트롤의 통신이 수행에서 COleControl.일부 컨테이너의 요청을 처리 하도록 COleControl control 클래스에서 구현 되는 함수 멤버를 호출 합니다.모든 메서드와 일부 속성이이 방식으로 처리 됩니다.컨트롤의 클래스 컨테이너와 통신의 멤버 함수를 호출 하 여 시작할 수도 있습니다 COleControl.이 이런 이벤트가 발생 합니다.
ActiveX 컨트롤의 활성 및 비활성 상태
컨트롤에 두 가지 기본 상태만 있을: 활성 및 비활성 합니다.전통적으로 이러한 상태는 컨트롤 창 했습니다 여부에 의해 구분 했습니다.활성 컨트롤 창 밖에 없었습니다. 비활성 컨트롤 하지 않습니다.창 없는 활성화가 도입 되면서,이 차이점은 더 이상 유니버설, 이지만 여전히 많은 컨트롤에만 적용 됩니다.
경우는 창 없는 컨트롤 활성 호출 마우스 캡처, 키보드 포커스, 스크롤, 및 기타 창 서비스 컨테이너에서 이동 합니다.수도 있습니다 비활성 컨트롤 마우스 상호 작용을 제공컨트롤을 만드는 것은 물론, 활성화에서 창을 만들 때까지 기다려야.
컨트롤 창이 활성화 되는 경우는 컨트롤 컨테이너, 사용자 및 Windows와 완전히 상호 작용할 수 있습니다.아래 그림의 ActiveX 컨트롤, 컨트롤 컨테이너 및 운영 체제 간의 통신 경로 보여 줍니다.
창 있는 ActiveX 컨트롤의 Windows 메시지 처리(활성화된 경우)
Serialization
지 속성이 라고도 하는 데이터를 직렬화 할 수 있는 컨트롤을 속성의 값을 영구 저장소에 쓸 수 있습니다.저장소에서 개체의 상태를 읽어 컨트롤 다음 다시 수 있습니다.
컨트롤 액세스 저장소 매체를 가져오고 있는지 참고.대신 컨트롤의 컨테이너 컨트롤 적절 한 시기에 사용 하는 저장소 매체를 제공할 책임이 있습니다.Serialization에 대 한 자세한 내용은 문서를 참조 하십시오. ActiveX 컨트롤 MFC: 직렬화.Serialization 최적화에 대 한 내용은 최적화 지 속성 및 초기화 ActiveX 컨트롤에서: 최적화 합니다.
ActiveX 컨트롤 클래스 및 도구를 설치합니다.
Visual C++를 설치할 때 ActiveX는 MFC 클래스 및 소매를 제어 하 고 ActiveX 컨트롤 (기본적으로 선택 되어) 설치를 선택한 경우 런타임 Dll이 자동으로 설치 되는 ActiveX 컨트롤을 디버깅 합니다.
기본적으로는 ActiveX 컨트롤 클래스 및 도구 \Program Files\Microsoft Visual Studio 다음 하위 디렉터리에 설치 됩니다.NET.
\Common7\Tools
Test Container 파일 (TstCon32.exe, 물론 해당 도움말 파일)를 포함합니다.
\Vc7\atlmfc\include
ActiveX MFC 컨트롤을 개발 하는 데 필요한 포함 파일이 들어 있습니다.
\Vc7\atlmfc\src\mfc
MFC에서 특정 ActiveX 컨트롤 클래스의 소스 코드가 포함 되어 있습니다.
\Vc7\atlmfc\lib
MFC 사용 ActiveX 컨트롤을 개발 하는 데 필요한 라이브러리가 들어 있습니다.
또한 MFC ActiveX 컨트롤에 대 한 샘플입니다.이러한 샘플에 대 한 자세한 내용은 참조 하십시오. 컨트롤 샘플: MFC-Based ActiveX 컨트롤