J'essaye d'écrire un composant C# qui exposera des événements. Le composant doit être importé par une application C++ non gérée. Selon quelques tutoriels que je suis venu avec ce code (pour le côté C#): CodeÉvénements de composant C#?
namespace COMTest
{
[ComVisible(true),
Guid("02271CDF-BDB9-4cfe-B65B-2FA58FF1F64B"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ITestEvents
{
void OnTest();
}
[ComVisible(true),
Guid("87BA4D3A-868E-4233-A324-30035154F8A4")]
public interface ITest
{
void RaiseTest();
} // End of ITest
[ComVisible(true),
Guid("410CD174-8933-4f8c-A799-8EE82AF4A9F2"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(ITestEvents))]
public class TestImplimentation : ITest
{
public TestImplimentation()
{
}
public void RaiseTest()
{
if (null != OnTest)
OnTest();
}
public delegate void Test(); //No need to expose this delegate
public event Test OnTest;
}
}
Maintenant, mon C++ a un simple:
#import "COMTest.tlb" named_guids raw_interfaces_only
Ce qui génère un fichier TLH. Ce fichier tlh contient tout sauf mon événement (OnTest). Que fais-je incorrectement?
Merci, mais c'est exactement ce que je fais dans mon exemple, ça ne marche pas. – Kyle
J'ai ce travail. Je n'ai pas réalisé que le fichier tlh ne générerait que des informations pour les classes que j'utilisais. Dès que j'ai fait hériter ma classe C++ de la classe ITestEvents, tout a commencé à fonctionner correctement. Merci pour l'information. – Kyle