Wie Delegate definieren und einbinden

09/09/2007 - 14:31 von Alexander Mueller | Report spam
Hallo

In einer 'Solution' habe ich zwei managed Projekte eines in VC++
und eins C#.
Das C++ soll eine Delegate 'StatusChange (int oldState, int newState)'
definieren, über dass das C#-Projekt informiert wird,
wie geht das denn?

Das C#-Projekt referenziert selbstverstàndlich bereits die C++-NET-DLL
und ruft auch Code daraus auf.

MfG,
Alex
 

Lesen sie die antworten

#1 Frank Dzaebel
09/09/2007 - 16:32 | Warnen spam
Hallo Alexander,

In einer 'Solution' habe ich zwei managed Projekte eines in VC++ und eins
C#. Das C++ soll eine Delegate 'StatusChange (int oldState, int newState)'
definieren, über dass das C#-Projekt informiert wird,
wie geht das denn?
Das C#-Projekt referenziert selbstverstàndlich bereits die C++-NET-DLL und
ruft auch Code daraus auf.



Zum Beispiel so:

// C# Projekt TestLibCpp, Form1.cs:

using System;
using System.Windows.Forms;
using MyCppLib;

namespace TestLibCpp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Class1 myClass = new Class1();
myClass.StatusChange += new Class1.
StatusChangeEventHandler(myClass_StatusChange);
myClass.MyThrowStatusChange();
}

void myClass_StatusChange(ValueType oldState, ValueType newState)
{
MessageBox.Show(oldState + ", " + newState);
}
}
}

__________________________________
// VC++ Projekt MyCppLib, MyCppLib.h:

#pragma once
using namespace System;

namespace MyCppLib {

public ref class Class1
{
public:
delegate void StatusChangeEventHandler(
int^ oldState, int^ newState);
event StatusChangeEventHandler^ StatusChange;

void MyThrowStatusChange()
{
StatusChange(42,43);
}
};
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen