2009-03-30 7 views
0

J'ai créé un objet COM en utilisant ATL. Je veux créer un nouvel objet qui peut être retourné à partir d'une méthode et passé en paramètre. J'ai créé la coclasse, mais je n'arrive pas à comprendre comment ajouter une méthode qui l'acceptera comme paramètre. L'erreur que j'obtiens est MIDL2025: erreur de syntaxe: attente d'une spécification de type proche de "IgBrush". J'utilise Visual Studio 2008.ATL: Je veux créer une coclasse que je peux utiliser comme paramètre pour une méthode de ma classe. Pourquoi je n'arrive pas à faire fonctionner ça?

Lorsque j'ai ajouté une énumération, je me rappelle avoir beaucoup joué avec l'IDL, et j'ai fini par accepter l'énumération en tant que paramètre. Pas de chance avec la coclasse. A partir du code généré par défaut fourni par l'assistant ATL, quelles sont les étapes nécessaires pour que cela fonctionne? (c'est-à-dire, que dois-je déplacer où et pourquoi?)

Répondre

1

Il serait utile si vous mettez le IDL que vous utilisez.

Pour utiliser un type dans MIDL, vous devez d'abord le déclarer.

interface IMyFactory:IDispatch 
{ 
    ... 
}; 

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

Mais je vous recommande de passer ces paramètres comme IUnknown * ou * IDispach (si elles sont le cas), puis dernière ressource sera d'utiliser NUL * en tant que paramètres.

Questions connexes