ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [펌] 헤더정보를 이용한 C++에서의 컴포넌트(Component) 사용방법
    Programming/ActiveX 2008. 4. 15. 11:50
    1. 컴포넌트 개발자가 배포하는 프로젝트명.h 파일을 사용하는 방법
     
         프로젝트명.h -> 컴포넌트의 CLSID, 인터페이스에 대한 class 헤더, IID가 포함됨.
     
         // 프로젝트명.h
         MIDL_INTERFACE("FFAA434B-F6F5-4029-96FB-8876893C9EAA")
         IBlockSocket : public IDispatch
         {
                
         };
         
    class DECLSPEC_UUID("BF9B9364-386A-4527-A03D-9254F59F5B9B") BlockSocket;
      
         이러한 정보를 이용 인터페이스 포인터 선언 후 CoCreateInstance()함수를 호출하여 시스템에 등록된 컴포넌트 객체를 동적으로 생성한다.
     
         IBlockSocket *pISocket = NULL;
         hr = ::CoCreateInstance(__uuidof(BlockSocket)
                                            , NULL
                                           , CLSCTX_INPROC_SERVER
                                            , __uuidof(IBlockSocket)
                                            , (void**)&pISocket);
     
         HRESULT hr = pISocket->Connect(CComBSTR("127.0.0.1"), 5000);
         If(FAILED(hr))
         {
          // ERROR
    }
    pISocket->Release();
     
    - 참고 -
     
    /* RpcNdr.h */
    #define MIDL_INTERFACE(x)   struct DECLSPEC_UUID(x) DECLSPEC_NOVTABLE
     
    /* WinNT.h */
    #ifndef DECLSPEC_UUID
    #if (_MSC_VER >= 1100) && defined (__cplusplus)
    #define DECLSPEC_UUID(x)    __declspec(uuid(x))
    #else
    #define DECLSPEC_UUID(x)
    #endif
    #endif
     
    __declspec(uuid())
    -> VC++ 키워드로써 COM 개체나 인터페이스에 GUID를 지정할 수 있게 한다. 
Designed by Tistory.