ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 커스텀 인터페이스 COM 클래스 - ATL
    컴포넌트(COM)/COM 2008. 11. 19. 23:45
    CComObjectRoot
    CComObjectRootEx<>
    .InernalAddRef()
    .InernalRelease()
    .InernalQueryInterface()
    CComCoClass<>
    클래스 팩토리
    CComObject
    IUnknown

    .CreateInstance()    // static
    CComEnum
    IEnum{XXX}
    .Init()
    AtlFlagCopy


    1. [ATL COM AppWizard] 옵션으로 DLL 타입의 새로운 프로젝트를 생성한다.

    2. [ATL Object Wizard] 로 COM 클래스를 생성한다.    // [Insert / New ATL Objects]
    [Objects|Simple Object] 항목
    [Names|C++|Short Name]에 이름을 준다.

    3. 생성된 인터페이스의 콘텍스트 메뉴에서 [Add Method..]나 [Add Property..] 항목을 선택해서
        메소드, 속성을 추가한다.
    메소드 추가
    Method Name: 'AddNumbers'
    Parameters: '[in] long Num1, [in] long Num2, [out] long *ReturnVal'

    4. 생성된 메소드에 구현코드를 넣는다.
    클래스 및의 인터페이스 아래 생성된 메소드를 더블 클릭한다.
    다른 인터페이스 추가
    IDL 파일에 인터페이스를 정의한다.
    기존 COM 개체 클래스가 해당 인터페이스에서 파생하도록 기초 클래스를 추가한다.
    COM_INTERFACE_ENTRY 매크로를 사용하여 COM 맵에 인터페이스를 추가한다.
    해당 인터페이스의 메소드 함수 원형을 추가한다.

    새로운 COM 클래스의 생성
    [New Class] 대화상자에서 Class Type을 "ATL Class" 항목을 선택하고 Class Information 카테고리의 [Name] 항목에 클래스 이름을 주고 생성할 수 있다.

    참조 사이트:
Designed by Tistory.