Je tente d'enregistrer un contrôle utilisateur winform en tant que serveur COM pour que mes applications MFC puissent les utiliser. Le contrôle winform est écrit en C++/CLI et utilise une DLL native non managée. Je veux utiliser les excellents services Interop de .net pour enregistrer ce contrôle utilisateur en tant que serveur COM.Enregistrement d'un winform usercontrol en tant que serveur COM
[ProgId("MyAx.MyAxControl")]
[ClassInterface(ClassInterfaceType::AutoDual)]
[Guid("612EAF58-ADCC-4e87-BC9E-FA208B037414")]
public ref class MyAxControl: public System::Windows::Forms::UserControl
MSDN dit que je peux utiliser regasm pour obtenir ce que je fais, alors je suis allé de l'avant et l'a enregistré
regasm MyAx.dll /tlb:MyAx.tlb
J'ai même généré une entrée de registre
regasm MyAx.dll /regfile:MyAx.reg
et a fusionné avec mon registre
À ce stade, je m'attendais à ce que ce contrôle apparaisse dans mon composant COM s quand je vais choisir les éléments pour la boîte à outils. Cependant, il n'apparaît pas là-bas. Est-ce un comportement attendu? Si oui, comment vais-je utiliser ce contrôle dans mon application MFC, d'ailleurs toute langue qui consomme un contrôle ActiveX (disons Java).
Je l'avais déjà dans mon code. Bien a pris certains de vos conseils pour l'implémenter comme vous venez de le faire. Mais il n'apparaît pas dans les composants COM lorsque vous essayez de l'ajouter en choisissant des éléments. – rptony
Il semble que bien que vous définissiez le ProgId, le composant COM est répertorié par le nom de type complet (espace de noms complet et nom de fichier) plutôt que par ce ProgId. Il est cependant créable par ce ProgId. J'ai mis à jour le code avec reg.SetValue ("", "Your.ProgId.Here"); et maintenant il devrait s'afficher correctement dans les composants COM (également dans OLE Viewer sous Objets \ Groupped By Category \ Controls) – kossib