2009-09-14 9 views

Répondre

3

Oui. D'abord, vous devez créer un objet COM. Voici un exemple très simple.

[Guid("123565C4-C5FA-4512-A560-1D47F9FDFA20")] 
public interface IDoSomething 
{ 
    [DispId(1)] 
    string Name { get; } 

    [DispId(2)] 
    int DoSomething(); 
} 

[ComVisible(true)] 
[Guid("12AC8095-BD27-4de8-A30B-991940666927")] 
[ClassInterface(ClassInterfaceType.None)] 
public sealed class DoSomething: IDoSomething 
{ 
    public DoSomething() 
    { 
    } 

    public string Name 
    { 
     get { return ""; } 
    } 

    public int DoSomething() 
    { 
     return 4; //random number 
    } 
} 

Ensuite, vous devez regaser votre assemblage. L'outil regasm ajoutera les entrées de registre COM nécessaires:

regasm.exe /tlb component.dll 

/TLB est nécessaire pour générer la bibliothèque de type à importer dans votre application MFC. Une fois votre assembly enregistré, vous pouvez appeler DoSomething dans votre application MFC comme tous les autres objets COM.

Cochez cette case link pour plus d'informations.

0

C'est un peu en dehors de mon territoire normal, car je n'interagis pas avec la technologie .NET Interop.

Il est possible de créer ce qu'on appelle un encapsulable COM Callable autour de votre contrôle/classe C# pour le rendre accessible à tout programme compatible COM. Je ne répéterai pas la réponse de Francis B, car elle est assez complète en l'état.

La grande question est de savoir si un contrôle C# visuel fonctionne de manière transparente dans une fenêtre MFC. Ce n'est pas quelque chose que je peux répondre, mais mon meilleur conseil serait de se préparer à une route cahoteuse à venir. S'il vous plaît voir http://bytes.com/topic/net/answers/430618-c-control-mfc-window-frame pour plus de détails.

Questions connexes