본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

VC++. ActiveX 활용하기. 멤버변수 연결하기. ActiveX 컨트롤 컨테이너.

by 리치굿맨 2016. 9. 20.

 

1. ActiveX 컨트롤.

 

ActiveX 컨트롤은 지속성, 연결 지점 및 호스팅과 관련된 표준 인터페이스를 지원하는 COM 구성 요소입니다. 이러한 표준 인터페이스는 컨트롤 컨테이너에서 컨트롤을 호스팅할 수 있는 프로토콜을 정의하고 메시지를 교환하고 이벤트를 처리합니다.

ActiveX 컨트롤은 COM 서버로서 다음과 같은 요소를 포함합니다.

용어

설명

properties

컨트롤에는 내부 상태를 나타내는 멤버 변수가 있으며 GetSet 접근자 함수로 구현됩니다. Get 함수는 .idl 파일에서 propget 태그가 있는 각 접근자 메서드에 대해 생성됩니다. Set 함수는 propput이나 propputref IDL 태그가 있는 각 접근자 메서드에 대해 생성됩니다.

접근자 함수를 정의하는 방법을 확인하려면 래퍼 클래스OLE/COM 개체 뷰어를 사용하십시오.

메서드

컨트롤의 동작은 컨트롤의 공용 메서드에 의해 정의됩니다. 래퍼 클래스를 사용하면 컨트롤의 메서드에 액세스할 수 있습니다.

래퍼 클래스를 사용하지 않을 경우(기본값) 인터페이스에 대한 포인터를 가져와 컨트롤의 메서드에 액세스합니다.

공용 메서드의 예로는 ADO 데이터 컨트롤의 Refresh 메서드가 있으며 이 메서드는 검색된 행 집합을 업데이트합니다.

이벤트

컨트롤은 이벤트를 생성하여 어떤 일이 발생했음을 호스트에 알릴 수 있습니다. Button 컨트롤에 대한 OnClick 이벤트를 예로 들 수 있습니다. 단추를 클릭하면 단추가 OnClick 이벤트를 생성합니다. 컨트롤의 호스트에 해당 이벤트에 대한 처리기가 있으면 이 처리기가 실행됩니다.

형식 라이브러리

형식 라이브러리는 컨트롤이 지원하는 속성, 메서드 및 이벤트를 컨트롤 컨테이너에 알립니다. 형식 라이브러리는 확장명이 .tlb인 별도의 파일로 유지되거나 컨트롤 내부에 유지됩니다.

또한 형식 라이브러리에는 컨트롤의 coclass 정보가 있습니다. coclass는 GUID로 식별되는 COM 클래스로, 컨트롤이 정의하는 하나 이상의 인터페이스가 포함됩니다.

형식 라이브러리를 보려면 OLE/COM 개체 뷰어를 사용하십시오.

다음 항목에서는 ActiveX 컨트롤 사용에 대해 설명합니다.


from MSDN : https://msdn.microsoft.com/ko-kr/library/wbds43cy.aspx

 


 

 

2. 대화상자에 ActiveX 넣기.

 

도구 모음에서 대화 상자로 ActiveX 컨트롤을 삽입하거나 ActiveX 컨트롤 삽입 대화 상자를 사용하여 삽입할 수 있습니다.

도구 상자에서 ActiveX 컨트롤을 삽입하려면

  1. 도구 상자의 빈 구역을 마우스 오른쪽 단추로 클릭합니다.

  2. 바로 가기 메뉴에서 도구 상자 사용자 지정을 클릭하고 원하는 컨트롤을 선택합니다.

  3. 컨트롤을 대화 상자 편집기의 대화 상자로 끕니다.

대화 상자 편집기에서 ActiveX 컨트롤을 삽입하려면

  1. 대화 상자를 마우스 오른쪽 단추로 클릭합니다.

  2. 바로 가기 메뉴에서 ActiveX 컨트롤 삽입을 클릭합니다.

    System_CAPS_note참고

    ActiveX 컨트롤 삽입을 사용하여 프로젝트에 ActiveX 컨트롤을 삽입하면 래퍼 클래스는 프로젝트에 포함되지 않습니다. 이 때는 직접 래퍼 클래스를 만들어 컨트롤의 기능을 사용자 지정해야 합니다.


참고 항목

 
 



 

3. ActiveX 컨트롤과 멤버 변수 연결

   

ActiveX 컨트롤 컨테이너 응용 프로그램에서 ActiveX 컨트롤을 쉽게 액세스하려면 ActiveX 컨트롤을 포함할 대화 상자 클래스의 멤버 변수와 ActiveX 컨트롤을 연결합니다.

참고   다른 방법으로도 컨테이너 클래스에서 포함 컨트롤에 액세스할 수 있지만 이 문서에서는 이 방법만 설명하겠습니다.

대화 상자 클래스에 멤버 변수를 추가하려면

  1. 클래스 뷰에서 주 대화 상자 클래스를 마우스 오른쪽 단추로 클릭하여 바로 가기 메뉴를 엽니다. 예를 들면 CContainerDlg를 선택합니다.
  2. 바로 가기 메뉴에서 추가를 선택한 다음 변수 추가를 선택합니다.
  3. 멤버 변수 추가 마법사에서 컨트롤 변수를 클릭합니다.
  4. 컨트롤 ID 목록 상자에서 포함 ActiveX 컨트롤의 컨트롤 ID를 선택합니다. 예를 들면 IDC_CIRCCTRL1을 선택합니다.
  5. 변수 이름 상자에 이름을 입력합니다.

    예를 들면 m_circctl을 선택합니다.

  6. 마침을 클릭하여 변경 내용을 적용하고 멤버 변수 추가 마법사를 끝냅니다.

참고 항목

ActiveX 컨트롤 컨테이너



from MSDN : https://msdn.microsoft.com/ko-kr/library/cc451443(v=vs.71).aspx

 




 

4. ActiveX 컨트롤의 클래스 추가.

 

이 마법사를 사용하면 사용 가능한 ActiveX 컨트롤의 인터페이스에서 MFC 클래스를 만들 수 있습니다. MFC 응용 프로그램, MFC DLL 또는 MFC ActiveX 컨트롤에 MFC 클래스를 추가할 수 있습니다.
System_CAPS_note참고

ActiveX 컨트롤에서 클래스를 추가하기 위해 자동화가 설정된 MFC 프로젝트를 만들 필요는 없습니다.

ActiveX 컨트롤은 광범위한 OLE 기능을 지원하고 다양한 소프트웨어의 요구 사항에 맞게 사용자 지정할 수 있는 COM(구성 요소 개체 모델) 기반의 다시 사용 가능한 소프트웨어 구성 요소입니다. ActiveX 컨트롤은 일반적인 ActiveX 컨트롤 컨테이너와 인터넷의 World Wide Web 웹 페이지 모두에 사용할 수 있도록 디자인되었습니다.

ActiveX 컨트롤의 MFC 클래스를 추가하려면

  1. 솔루션 탐색기 또는 클래스 뷰에서 ActiveX 컨트롤 클래스를 추가하려는 프로젝트의 이름을 마우스 오른쪽 단추로 클릭합니다.

  2. 바로 가기 메뉴에서 추가를 클릭한 다음 클래스 추가를 클릭합니다.

  3. 클래스 추가 대화 상자의 템플릿 창에서 ActiveX 컨트롤의 MFC 클래스를 클릭한 다음 열기를 클릭하여 ActiveX 컨트롤의 클래스 추가 마법사를 엽니다.

이 마법사에서 둘 이상의 인터페이스를 ActiveX 컨트롤에 추가할 수 있습니다. 마찬가지로, 마법사 세션 하나에서 둘 이상의 ActiveX 컨트롤로부터 클래스를 만들 수 있습니다.

시스템에 등록된 ActiveX 컨트롤에서 클래스를 추가할 수도 있고, ActiveX 컨트롤을 시스템에 먼저 등록하지 않고 형식 라이브러리 파일(.tlb, .olb, .dll, .ocx, .exe)에 있는 ActiveX 컨트롤에서 클래스를 추가할 수도 있습니다. ActiveX 컨트롤 등록에 대한 자세한 내용은 Registering OLE Controls을 참조하십시오.

마법사는 사용자가 선택한 ActiveX 컨트롤에서 추가하는 각 인터페이스에 대해 CWnd 또는 COleDispatchDriver에서 파생된 MFC 클래스를 만듭니다.

 
 



 

5. ActiveX 컨테이너

 
 
MFC응용프로그램에서 ActiveX를 사용하기 위한설정,
응용프로그램의 InitInstance 에  함수 AfxEnableControlContainer(); 실행되게 하고 stdafx.h 에 #include <Afxdisp.h>구문 추가해두면 된다.

BOOL CContainerApp::InitInstance()
{
   AfxEnableControlContainer();
...
}
  • Add the following to your project's STDAFX.H header file:
    #include <Afxdisp.h>
    

  • MFC DLL에서 ActiveX 컨테이너. 
    InitInstance 에서 추가로 CoInitialize(NULL);가 추가되어있어야 ActiveX가 정상 실행된다.
    BOOL CContainerApp::InitInstance()
    {  CoInitialize(NULL);
       AfxEnableControlContainer();
    ...
    }
    
     


     



    ///975.

    댓글0


    .    
    현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     .