다음을 통해 공유


CComCoClass::CreateInstance

이러한 사용 CreateInstance 함수는 COM의 인스턴스를 만들려면 개체 및 COM API를 사용 하지 않고 대 한 인터페이스 포인터를 검색 합니다.

template <class Q>
static HRESULT CreateInstance(
   Q** pp 
);
template <class Q>
static HRESULT CreateInstance(
   IUnknown* punkOuter,
   Q** pp 
);

매개 변수

  • Q
    COM 인터페이스를 통해 반환 합니다 pp.

  • punkOuter
    [in] 알 수 없는 외부 또는 집계의 제어 알 수 없음.

  • pp
    [out] 만들기가 성공 하는 경우에 요청 된 인터페이스 포인터를 받는 포인터 변수의 주소입니다.

반환 값

표준 HRESULT 값입니다.볼 CoCreateInstance 에 Windows SDK 가능한 반환 값을 설명 합니다.

설명

이 함수는 첫 번째 오버 로드는 일반적인 개체를 만드는 데 사용 합니다. 두 번째 오버 로드를 사용 하면 생성 되는 개체를 집계 합니다.

필요한 COM 개체를 구현 하는 ATL 클래스 (즉, 서식 파일의 첫 번째 매개 변수로 사용 되는 클래스 CComCoClass) 호출 하는 코드 같은 프로젝트에 있어야 합니다.COM 개체를 만들 클래스 팩터리를 등록이 ATL 클래스에 의해 수행 됩니다.

방해가 외부에서 생성 되를 사용 하 여 개체를 만들기 위한 유용 이러한 함수는 OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO 매크로.COM API의 효율성 측면을 방지 하려는 경우에도 유용 합니다.

이때 인터페이스 Q 를 사용 하 여 검색할 수 있습니다 관련 된 IID 있어야는 __uuidof 연산자.

예제

다음 예제에서는 CDocument ATL 마법사 생성 클래스에서 파생 된 CComCoClass 를 구현 하는 IDocument 인터페이스.클래스와 개체 맵에 등록 되어 있는 OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO 클라이언트를 사용 하 여 문서 인스턴스를 만들 수 있도록 매크로 CoCreateInstance.CApplication문서 클래스의 인스턴스를 만들고 해당 COM 인터페이스 중 하나에 있는 메서드를 제공 하는 Coclass가입니다.얼마나 쉬운지 보여 줍니다 다음 코드 사용 하 여 문서 클래스의 인스턴스를 만들 수 있는 CreateInstance 에서 상속 된 멤버는 CComCoClass 기본 클래스.

STDMETHODIMP CMyApp::CreateDocument( /* [out, retval] */ IDocument** ppDoc)
{
   *ppDoc = NULL;
   return CMyDoc::CreateInstance(ppDoc);
}

요구 사항

헤더: atlcom.h

참고 항목

참조

CComCoClass 클래스