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