2009-03-30 2 views
0

Ich habe ein COM-Objekt mit ATL erstellt. Ich möchte ein neues Objekt erstellen, das von einer Methode zurückgegeben und als Parameter übergeben werden kann. Ich habe die Co-Klasse erstellt, aber ich kann nicht herausfinden, wie ich eine Methode hinzufügen kann, die sie als Parameter akzeptiert.ATL: Ich möchte eine Co-Klasse erstellen, die ich als Parameter für eine Methode in meiner Klasse verwenden kann. Warum kann ich das nicht zur Arbeit bringen?

Der Fehler, den ich bekomme, ist MIDL2025: Syntaxfehler: erwartet eine Typspezifikation in der Nähe von "IgBrush". Ich benutze Visual Studio 2008.

Als ich eine Aufzählung hinzugefügt habe, erinnere ich mich daran, mit der IDL ein wenig herumzuspielen, und schließlich bekam es die Aufzählung als Parameter zu akzeptieren. Kein solches Glück mit der Co-Klasse.

Von dem standardmäßig generierten Code, den der ATL-Assistent bereitstellt, welche Schritte sind erforderlich, um das zu erreichen? (z. B. was ziehe ich wohin und warum?)

Antwort

1

Es würde helfen, wenn Sie die IDL setzen, die Sie verwenden.

Um einen Typ in MIDL zu verwenden, müssen Sie ihn zuerst deklarieren.

interface IMyFactory:IDispatch 
{ 
    ... 
}; 

interface IMyObject:IDispatch 
{ 
    HRESULT SetFactory([in] IMyFactory * state); 
} 

Aber ich würde empfehlen, dass Sie diese Parameter wie IUnknown * oder * IDispach passieren (wenn sie sachgemäßer sind), dann wird letzte Ressource VOID zu verwenden * als Parameter.

Verwandte Themen