1 /*!
2 	@file
3 	@author		Albert Semenov
4 	@date		01/2009
5 	@module
6 */
7 #pragma once
8 
9 #include <MyGUI.h>
10 #include <gcroot.h>
11 
12 #include "Marshaling.h"
13 #include "Delegate3.h"
14 
15 namespace MyGUI
16 {
17 	namespace Managed
18 	{
19 
20 		template <typename MD, typename T1, typename T2, typename T3>
21 		class Delegate3_Ref2 : public Delegate3<MD, T1, T2, T3>
22 		{
23 		public:
Delegate3_Ref2(MD _delegate)24 			Delegate3_Ref2 (MD _delegate) : Delegate3<MD, T1, T2, T3>(_delegate) { }
25 
invoke(T1 p1,T2 p2,T3 p3)26 			virtual void invoke( T1 p1, T2 p2, T3 p3 )
27 			{
28 				Widget ^ widget = nullptr;
29 				((MD)mDelegate)(Convert<T1>::To(p1), widget, Convert<T3>::To(p3));
30 				p2 = Convert<MyGUI::Widget*>::From(widget);
31 			}
32 
33 		};
34 
35 	} // namespace Managed
36 } // namespace MyGUI
37