Programming/ActiveX

[펌] 헤더정보를 이용한 C++에서의 컴포넌트(Component) 사용방법

smok95 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를 지정할 수 있게 한다. 
반응형