2010-05-24 6 views
1

J'ai une interface dans le projet ATL qui doit contenir un membre avec le paramètre Scripting :: IDictionary ** mais dans le fichier MIDL avec la description de mon interface ce n'est pas possible parce que la bibliothèque de script n'est pas présentée dans la bibliothèque par défaut . Je l'ai toujours scrrun.tlb et d'essayer de l'utiliser dans MIDL mais ça fonctionne pasATL et types de scrrun.dll

code est ici: midl-code

Répondre

1

Ajouter ce qui suit à votre IDL:

importlib("scrrun.dll");

vous pouvez utiliser IDictionary.

Fonctionne pour moi sur XP et plus.

Voici un extrait de quelques-uns de mes IDL:

import "oaidl.idl"; 
import "ocidl.idl"; 

library FooLib 
{ 
    importlib("stdole2.tlb"); 
    importlib("scrrun.dll"); 

    [ 
     uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX), 
     helpstring("_FooLibEvents Interface") 
    ] 
    dispinterface _IFooEvents 
    { 
     properties: 
     methods: 
     [id(1)] void AnEvent(IDictionary* dict); 
    }; 
    ... 
} 
+0

Je suis en train mais mais obtenir erreur MIDL2025: erreur de syntaxe: attend une spécification de type près de « IDictionary » erreur MIDL2026: ne peut pas récupérer à partir d'erreurs de syntaxe antérieures; abandon de la compilation. Souhaitez-vous me montrer le code de travail? – shadeglare

+0

Merci pour votre aide. – shadeglare

+0

Est-ce que ça marche? Je peux créer une nouvelle forme de projet ATL scratch si cela aide. – Rob