Here’s step by step instructions of how to create a callback function which allows a function in one class to be called by some other class it is using (for instance, you may have a class you’ve created that provides communication functions and you want to pass received data back to the main class or your form whenever it gets received).


//TO ADAPT FOR EACH USE, FIND AND REPLACE THE FOLLOWING:
//	NAME						CHANGE TO
//	ThisClassName				Name of the class that contains the function to be called.
//	ProcessNewEventFunction		Name of the function that will be called by the callback (in the class that contains the function to be called).
//	ProcessNewEventFunction_Def	Same as the name used ProcessNewEventFunction but made different, e.g. by adding _def to the end.
//	OtherClassName				Name of the class that will be calling back (the other class)
//	OtherClassObject1			Name of the other class object in the class which will be called back
//	SetMyCallbackFunction			Function to call in the other class to set the callback function it should call back
//	OtherClassCallbackFunction1		Object in the other class which stores the function to be called back.

In Class That Contains Function To Be Called

Create the function to be called:

	public: void ThisClassName::ProcessNewEventFunction (String ^SomeTextIWantToPassForExample)
	{
	}
Call other class function that we are passing the callback delegate to:

	//Set our callback function
	ProcessNewEventFunction_Def ^del = gcnew ProcessNewEventFunction_Def(this, &ThisClassName::ProcessNewEventFunction); 	//Class::FunctionName
	OtherClassObject1->SetMyCallbackFunction(del);

In Class That Needs To Call The Function

Define delegate handler somewhere outside of the class (i.e. inside .h file namespace but before public ref class)

	public delegate void ProcessNewEventFunction_Def (String ^SomeTextIWantToPassForExample);
Define object to store passed delegate

	private: ProcessNewEventFunction_Def ^OtherClassCallbackFunction1;
Create function to receive the delegate and store it

	public: void OtherClassName::SetMyCallbackFunction(ProcessNewEventFunction_Def ^del)
	{
		OtherClassCallbackFunction1 = del;
	}
To call the function

	if (OtherClassCallbackFunction1 != nullptr)
		OtherClassCallbackFunction1("12345");
Feel free to comment if you can add help to this page or point out issues and solutions you have found. I do not provide support on this site, if you need help with a problem head over to stack overflow.

Comments

Your email address will not be published.