COM: Methode einen Pointer auf ein Interface geben + initializieren



  • Hallo Board,

    ich habe sagen wie zwei COM-Interfaces: IFoobar und IFoo.
    In der IFoobar sollte eine Methode geben, die einen Pointer auf IFoo zurückgibt.

    Wie mache ich das am besten?

    interface IFoobar : IDispatch
    {
    [id(1), helpstring("Methode GetFoo")] HRESULT GetFoo([out, retval] IDispatch* pFoo);
    // oder
    [id(1), helpstring("Methode GetFoo")] HRESULT GetFoo([out, retval] IFoo* pFoo);
    // oder
    [id(1), helpstring("Methode GetFoo")] HRESULT GetFoo([out, retval] VARIANT* pFoo);
    }
    

    Was wäre am besten?

    Ich will in der Methode selbst so was machen:

    STDMETHODIMP Foobar::GetFoo(/*[out, retval]*/ IDispatch* pFoo)
    {
        AFX_MANAGE_STATE(AfxGetStaticModuleState())
    
        IFooPtr p(__uuidof(Foo)); // smart pointer auf dem scope
        *pFoo = p; // pFoo soll jetzt ein gültiger Pointer sein..
    
        return S_OK;
    }
    

    Wie mache ich das am besten?


Anmelden zum Antworten