Mouse Event Handling in CCLI Event Mouse Event

  • Slides: 8
Download presentation
Mouse Event Handling in C++/CLI • Event: Mouse. Event. Args – Button, Clicks, delta,

Mouse Event Handling in C++/CLI • Event: Mouse. Event. Args – Button, Clicks, delta, X, Y; • Mouse Event Handlers: Form 1_Mouse. Down, Form 1_Mouse. Up, Form 1_Mouse. Move • Registration (delegate): – this->Mouse. Down += gcnew Mouse. Event. Handler(…); – this->Mouse. Up += gcnew Mouse. Event. Handler(…); – this->Mouse. Move += gcnew Mouse. Event. Handler(…);

Key Event Handling in C++/CLI • Event: Key. Event. Args, (Key. Press. Event. Args)

Key Event Handling in C++/CLI • Event: Key. Event. Args, (Key. Press. Event. Args) – Key. Event. Args: Alt, Control, Handled, Key. Code, Key. Data, Key. Value, Modifiers, Shift, Suppress. Key. Press – (Key. Press. Event. Args: Handled, Key. Char) • Key Event Handlers: Form 1_Key. Down, Form 1_Key. Up, Form 1_Key. Press • Registration (delagate): – this->Key. Down += gcnew Key. Event. Handler(…); – this->Key. Up += gcnew Key. Event. Handler(…); – this->Key. Press += gcnew Key. Press. Event. Handler(…);

Examples • Example test. Key, demonstrate how to handle key events • Example Tangram,

Examples • Example test. Key, demonstrate how to handle key events • Example Tangram, demonstrate combination of key and mouse events

Event Handling Source Object: build a event source class (1) the event : event

Event Handling Source Object: build a event source class (1) the event : event Say. Handler^ On. Say; (2) Event trigger method (e. g. , mouse, key, or call the delegate) Event Receiver Object: build a event receiver class (1) use the event source class; (2) A method AA to be delegated (public, same signature) (3) Place/combine the method to event handler (e. g. using += constructor) … = gcnew Say. Handler ( handle-of-object, address-ofmethod AA); H_Func(Event) {} delegate Delegate: a class (1) create: delegate void Say. Handler(String ^name); (2) a method AA to be delegated (same signature) (e. g. , in other classes) (3) Place/combine the method on the Delegate (using Delegate’s two constructors). (4) multicast Delegate Chain. (5) Invoke a Delegate (two ways)

Event Source Class delegate void Say. Handler(String ^name); ref class Event. Source { public:

Event Source Class delegate void Say. Handler(String ^name); ref class Event. Source { public: event Say. Handler^ On. Say; void Say(String ^name) { On. Say(name); } };

Event Receiver Classes ref class Event. Receiver 2 { Event. Source ^source; public: Event.

Event Receiver Classes ref class Event. Receiver 2 { Event. Source ^source; public: Event. Receiver 2(Event. Source ^src) { //assume src not null source = src; source ->On. Say += gcnew Say. Handler (this, &Event. Receiver 2: : Say. Bye); } void Say. Bye(String ^name) { Console: : Write(“good-bye ”); Console: : Write. Line(name); } };

Event Receiver Classes ref class Event. Receiver 1 { Event. Source ^source; public: Event.

Event Receiver Classes ref class Event. Receiver 1 { Event. Source ^source; public: Event. Receiver 1(Event. Source ^src) { //assume src not null source = src; source ->On. Say += gcnew Say. Handler (this, &Event. Receiver 1: : Say. Hello); source ->On. Say += gcnew Say. Handler (this, &Event. Receiver 1: : Say. Stuff); } void Remove. Stuff() { source->On. Say -= gcnew Say. Handler (this, &Event. Receiver 1: : Say. Stuff); } void Say. Hello(String ^name) { Console: : Write(“Hello, ”); Console: : Write. Line(name); } void Say. Stuff(String ^name) { Console: : Write(“Nice, ”); Console: : Write. Line(name); } };

main void main() { Event. Source ^source = gcnew Event. Source(); Event. Receiver 1

main void main() { Event. Source ^source = gcnew Event. Source(); Event. Receiver 1 ^receiver 1 = gcnew Event. Receiver 1(source); Event. Receiver 2 ^receiver 2 = gcnew Event. Receiver 2(source); source ->Say(“My Fraser”); Console: : Write. Line(“-----------”); receiver 1 ->Remove. Stuff(); source ->Say(“Stephen”); };