History: MyGUI use delegates
Source of version: 6
Copy to clipboard
!!!MyGUI Delegates
To use your function as delegate you must have specific signature for it. You can find event signature near event declaration or in [http://mygui.info/docs/|documentation] for specific widget and in [http://mygui.info/docs/class_my_g_u_i_1_1_widget_event.html|WidgetEvent class documentation] for common events. For example for eventMouseButtonClick :
{CODE(wrap="1", colors="c++")} /** Event : Mouse button pressed and released.\n
signature : void method(MyGUI::Widget* _sender)
@param _sender widget that called this event
*/
EventHandle_WidgetVoid eventMouseButtonClick;{CODE}
So your function must have only one input parameter - MyGUI::Widget* _sender.
!!!!Same class member function
{CODE(wrap="1", colors="c++")} class Test
{
public:
void mousePressed(MyGUI::Widget* _widget)
{
// ...
}
void main()
{
MyGUI::Button* button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
button->eventMouseButtonClick = MyGUI::newDelegate(this, &Test::mousePressed);
}
}
{CODE}
!!!!Parent class member function
{CODE(wrap="1", colors="c++")} class Parent
{
public:
void mousePressed(MyGUI::Widget* _widget)
{
// ...
}
};
class Child : public Parent
{
void main()
{
MyGUI::Button* button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
button->eventMouseButtonClick = MyGUI::newDelegate(this, &Child::mousePressed);
}
}
{CODE}
!!!!Member function from another class
{CODE(wrap="1", colors="c++")} class Test
{
public:
void mousePressed(MyGUI::Widget* _widget)
{
// ...
}
}
class Main
{
public:
void main()
{
MyGUI::Button* button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
Test test;
button->eventMouseButtonClick = MyGUI::newDelegate(&test, &Test::mousePressed);
// or
Test * test2 = new Test(/*...*/);
button->eventMouseButtonClick = MyGUI::newDelegate(test2, &Test::mousePressed);
}
}
{CODE}
!!!!Global function
{CODE(wrap="1", colors="c++")} void mousePressed(MyGUI::Widget* _widget)
{
// ...
}
class Main
{
public:
void main()
{
MyGUI::Button* button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
button->eventMouseButtonClick = MyGUI::newDelegate(mousePressed);
}
}
{CODE}
!!!!Static member function from any class (same or another)
{CODE(wrap="1", colors="c++")} class Test
{
public:
// static function
static void mousePressed(MyGUI::Widget* _widget)
{
// ...
}
void main()
{
MyGUI::Button* button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
button->eventMouseButtonClick = MyGUI::newDelegate(Test::mousePressed);
}
}
{CODE}