History: MyGUI use delegates
Source of version: 1
- «
- »
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://my-gui.sourceforge.net/docs/|documentation] for specific widget and in [http://my-gui.sourceforge.net/docs/class_my_g_u_i_1_1_widget_event.html|WidgetEvent class documentation] for common events. For example for eventMouseButtonClick :
~pp~ /** Event : Mouse button pressed and released.\n
signature : void method(MyGUI::WidgetPtr _sender)
@param _sender widget that called this event
*/
EventHandle_WidgetVoid eventMouseButtonClick;~/pp~
So your function must have only one input parameter - MyGUI::WidgetPtr _sender.
!!!!Same class member function
~pp~ class Test
{
public:
void mousePressed(MyGUI::WidgetPtr _widget)
{
// ...
}
void main()
{
MyGUI::ButtonPtr button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
button->eventMouseButtonClick = MyGUI::newDelegate(this, &Test::mousePressed);
}
}
~/pp~
!!!!Member function from another class
~pp~ class Test
{
public:
void mousePressed(MyGUI::WidgetPtr _widget)
{
// ...
}
}
class Main
{
public:
void main()
{
MyGUI::ButtonPtr 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);
}
}
~/pp~
!!!!Global function
~pp~ void mousePressed(MyGUI::WidgetPtr _widget)
{
// ...
}
class Main
{
public:
void main()
{
MyGUI::ButtonPtr button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
button->eventMouseButtonClick = MyGUI::newDelegate(mousePressed);
}
}
~/pp~
!!!!Static member function from any class (same or another)
~pp~ class Test
{
public:
// static function
static void mousePressed(MyGUI::WidgetPtr _widget)
{
// ...
}
void main()
{
MyGUI::ButtonPtr button = mGUI->createWidget<MyGUI::Button>("Button", 10, 10, 300, 26, MyGUI::Align::Default, "Main");
button->eventMouseButtonClick = MyGUI::newDelegate(Test::mousePressed);
}
}
~/pp~
((Category:MyGUI))
((Category:GUI))